不知道大家有沒有發(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 {
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26