你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS 從Objective-C到Swift

iOS 從Objective-C到Swift

編輯:IOS開發綜合

前言: 博主功力有限, 也是在學習的過程中, 之前寫了幾篇在iOS開發中使用Swift進行開發偏向於UI方向的文章, 明顯地感覺到OC與Swift的之間的一些區別與聯系, 並且還有一些值得注意的地方, 希望看到這篇文章的小伙伴更快地上手Swift. , 最近自己的狀態也是很糟糕, 更糟糕的是感冒了(囧~). 有什麼錯誤請評論指出, 謝謝.

一 屬性

OC中 我們最常用的property
// 常常會這樣寫
@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){
}
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved