不知道大家有沒有發(fā)現(xiàn),在一個 Objective-C 和 Swift 混編的 App 中,當(dāng)把一個 OC 中的參數(shù)轉(zhuǎn)到 Swift 時,Swift 會自動把這個變量進行強制解包。舉個例子,我在 OC 中定義這樣一個變量:

@property (nonatomic, copy) NSString *foo;

它轉(zhuǎn)成 Swift 就變成了這樣:

var foo: String!

這樣看上去合情合理。Swift 中有 String? 和 String! 兩種形式,但 OC 中沒有 NSString? 和 NSString! ,當(dāng) Swift 無法區(qū)分 OC 中的變量是不是 nil 的時候,一律強行轉(zhuǎn)化為非空參數(shù)。這樣設(shè)計體現(xiàn)了 Swift 強安全性語言的特性。

但是這時候問題來了。我們回到上文中的例子,假如 OC 中對 foo的使用如下:

@property (nonatomic, copy) NSString *foo;

- (void)secretFunc {  
 // 一些詭異復(fù)雜的操作  ...  
 self.foo = nil; }

然后我們在 Swift 中這樣調(diào)用:

func init() {
  objectiveCObject.secretFunc()

}func calcLen() -> Int {  

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式