前言: 博主功力有限, 也是在學習的過程中, 之前寫了幾篇在iOS開發中使用Swift進行開發偏向於UI方向的文章, 明顯地感覺到OC與Swift的之間的一些區別與聯系, 並且還有一些值得注意的地方, 希望看到這篇文章的小伙伴更快地上手Swift. , 最近自己的狀態也是很糟糕, 更糟糕的是感冒了(囧~). 有什麼錯誤請評論指出, 謝謝.
// 常常會這樣寫 @property (nonatomic, copy) NSString *name;Swift中似乎更簡單了: 常常這樣說變量(var) | 常量(let), 示例代碼如下, 我定義一個name變量賦值為
Summer
class ViewController: UIViewController {
var name = "Summer"
}
所需要注意的: 似乎Swift中並沒有屬性修飾(strong,weak等。)
1.1 strong在Swift中是默認的
1.2 weak: 通過weak關鍵詞聲明
weak var btn = UIButton()
二 控制流
if 不需要使用 () 來包裹條件了, 示例代碼如下
let a = 10
if a < 5 {
// code
}
這裡所需要注意的: 條件必須為 Boolean表達式
// 所以這樣寫, 是錯誤的
let b = 10
if b {
//
}
for Swift為其添加了范圍操作符 … 與 ..<
for i in 1...5 {
print(i) // 1 2 3 4 5
}
// 同時支持自定義步長
for j in 0.stride(through: 10, by: 2) {
print(j) // 0 2 4 6 8 10
}
Switch 當然在swift中switch也有很大的提升
1.1 不需要強制加上 break
1.2 在OC中switch支持int和char類型作為匹配 而在swift中得到了很大的提升(可以對 浮點型, 字符串進行匹配了)
// 方便了很多
let des = "summer"
switch des{
case "summer":
print("夏天然後--- \("帥哥")")
case "1":
print("不知道什麼鬼")
case "2":
print("不知道什麼鬼")
case "3":
print("不知道什麼鬼")
default:
print("default")
}
三 函數(方法)
OC中 有實例方法和類方法
// 比如這樣, 寫了一個沒有返回值沒有參數的函數
- (void)print
+ (NSString *)returnStr
Swift中基本都是類似的, 看示例代碼感受一下
// func 關鍵字定義函數
// class 類方法修飾
// 返回值在 -> 之後 例子中就是沒有返回值
func printf() ->Void
class func returnStr() ->String
四 初始化
var btn = UIButton() // 這樣就可以了
值得注意的是: Swift為我們處理了alloc的過程, 而init有一些需要注意的地方
- Swift 都必須在對象被創建出來前設置好。也就是我們必須在init方法中賦好值,或是直接給屬性提供一個默認值。
五 Swift如何檢查delegate 是否為nil
// OC 中我們會這樣寫
if (self.dataSource && [self.dataSource respondsToSelector:@selector(titleForSegmentAtIndex:)]) {
thisSegmentTitle = [self.dataSource titleForSegmentAtIndex:index];
}
// Swift中非常簡潔, 示例如下
if let thisSementTitle = dataSource?.titleFroSegmentAtIndex?(index){
}