1.import的類
OC:某個只要要使用某個類就要將該類import舶吗。
swift:如果是用戶自己創(chuàng)建類,其他類無需import可以直接使用花枫。pod的一些三方類和系統(tǒng)的一些類,在使用的時候需要import
2.遵守協(xié)議實現(xiàn)協(xié)議中的代理方法
OC:
swift:
3.函數(shù)的返回值放在了后面
4.函數(shù)的參數(shù)類型放在了參數(shù)名的后面
5.函數(shù)的所有參數(shù)放在了一個"()"里,并且有了一個參數(shù)標簽
看swift和OC的對比
枚舉:
OC中:
typedef NS_ENUM(NSInteger, OrderType) {
OrderTypeHasPay, // 已經(jīng)支付
OrderTypeNoPay // 沒有支付
};
- (void)getOrderType:(OrderType)orderType{
if (orderType == OrderTypeHasPay) {
NSLog(@"已經(jīng)支付...");
}else if (orderType == OrderTypeNoPay){
NSLog(@"沒有支付...");
}
}
swift中:
enum OrderType {
case hasPay
case noPay
}
func getOrderType(orderType:OrderType) -> Void {
if orderType == OrderType.hasPay {
print("已經(jīng)支付...")
}else if orderType == OrderType.noPay{
print("沒有支付...")
}
}
6.swift中的閉包和OC中的block
OC中的block:
void(^)(void)
swift中的閉包:
()->()
@escaping()->() // 當在另一個閉包中使用某個閉包山憨,某個閉包要使用@escaping修飾
6.1解決swift中的閉包引起的循環(huán)引用(使用weak)
private lazy var titleView:SwiftPageTitleView = { [weak self] in
let titles = ["推薦", "游戲", "娛樂", "趣玩"]
let titleY:CGFloat = kStatusBarH + kNavigationBarH
let titleView = SwiftPageTitleView.init(frame: CGRect(x: 0, y: titleY, width: kScreenWidth, height: titleH), titles: titles)
titleView.deleate = self
return titleView
}()
7.swift中的可選類型
8.swift中的基本運算
只有相同數(shù)據(jù)類型的數(shù)據(jù)才能進行運算(Int類型要想和Double類型數(shù)據(jù)運行,需要先將Int類型數(shù)據(jù)強轉成Double類型數(shù)據(jù))
9.swift中的guard
增強了可讀性
guard age>18 else{ return } // 如果條件不為真就不再往下執(zhí)行
print("成年了...")
9.1.swift中的if
沒有了OC中的”非0即真"
10.swift中的switch
可以判斷多個條件
可以判斷多種類型
不用寫break了
11.swift中的區(qū)間
0..<10 // 半開半閉區(qū)間
0...9 // 閉區(qū)間
12.swift中的元組
取數(shù)據(jù)更加方便
取出之后就知道元素的類型了
let info = (name:1, age:1, height:3)
info.name
13.swift中的可選類型
swift是強類型語言弥喉。nil在swift中成了一種特殊類型郁竟,不能直接賦值給對象。只有可選類型才能賦值為nil
var name:Optional<String> = nil
var name:String? // 簡便寫法
name = Optional("a")
name = "a"
print(name!) // 可選類型取值 !:強制解包
// 可選綁定
if tempName = name{ // 如果有值就進行解包
print(tempName)
}
13.swift中的類型轉化
as as? as!
if (name = dict["name"] as? String){
print(name)
}
let name1 = name as! String // 確定能轉化成功之后使用as!
14.swift中的結構體
stuct Location{
var x:Double
var y:Double
func test(){print("111")}
mutating func move(distance:Double){
self.x += distance
}
func init(x:String, y:String){ // 擴充構造函數(shù)
self.x = Double(x) ?? 0 // 能解包就解包由境,不能解包就使用0
self.y = Double(y) ?? 0
}
}
14.swift中的屬性
存儲屬性棚亩、計算屬性、類屬性
var num1:Int = 1 // 存儲屬性
var num2:Int = 2
var num3:Int{ // 計算屬性
retun num1 + num2
}
static var name:String = "" // 類屬性
本篇文章會持續(xù)更新虏杰,愿大家加班不多工資多讥蟆,男同胞都有女朋友,女同胞都有男朋友纺阔。??