原創(chuàng)文章,歡迎轉(zhuǎn)載答捕。轉(zhuǎn)載請注明:關(guān)東升的博客
Swift與Objective-C API映射
在混合編程過程中Swift與Objective-C調(diào)用是雙向的靶橱,由于不同語言對于相同API的表述是不同的臊旭,他們之間是有某種映射規(guī)律的,這種API映射規(guī)律主要體現(xiàn)在構(gòu)造函數(shù)和方法兩個方面锨能。
1扯再、構(gòu)造函數(shù)映射
在Swift與Objective-C語言進(jìn)行混合編程時,首先涉及到調(diào)用構(gòu)造函數(shù)實例化對象問題址遇,不同語言下構(gòu)造函數(shù)表述形式不同熄阻,如圖是蘋果公司官方API文檔,描述了NSString類的一個構(gòu)造函數(shù)傲隶。
Swift構(gòu)造函數(shù)除了第一個參數(shù)外饺律,其它參數(shù)的外部名就是選擇器對應(yīng)部分名。規(guī)律的其它細(xì)節(jié)圖中已經(jīng)解釋的很清楚了跺株,這個規(guī)律反之亦然复濒,這里不再贅述。
2乒省、方法名映射
在Swift與Objective-C語言進(jìn)行混合編程時巧颈,不同語言下方法名表述形式也是不同的,如圖是蘋果公司官方API文檔袖扛,描述了NSString類的rangeOfString:options:range:方法砸泛。
選擇器第一個部分rangeOfString作為方法名,一般情況下Swift方法第一個參數(shù)的外部參數(shù)名是要省略的蛆封,“_”符號表示省略唇礁。之后的選擇器各部分名(如:options和range),作為外部參數(shù)名惨篱。除了參數(shù)名對應(yīng)為盏筐,參數(shù)類型也要對應(yīng)下來。
Swift 2.0之后方法可以聲明拋出錯誤砸讳,這些能拋出錯誤的方法琢融,不同語言下方法名表述形式如圖下圖所示,是writeToFile:atomically:encoding:error:蘋果公司官方API文檔簿寂。
比較兩種不同語言漾抬,我們會發(fā)現(xiàn)error參數(shù)在Swift語言中不再使用,而是在方法后添加了throws關(guān)鍵字常遂。
這種映射規(guī)律不僅僅只適用于蘋果公司官方提供的Objective-C類纳令,也適用于自己編寫的Objective-C類。