Swift Runtime

  1. 純Swift類的函數(shù)調(diào)用已經(jīng)不再是Objective-c的運(yùn)行時(shí)發(fā)消息,而是類似C++的vtable,在編譯時(shí)就確定了調(diào)用哪個(gè)函數(shù),所以沒法通過runtime獲取方法、屬性。
  2. TestSwiftVC繼承自UIViewController,基類為NSObject,而Swift為了兼容Objective-C,凡是繼承自NSObject的類都會(huì)保留其動(dòng)態(tài)性,所以我們能通過runtime拿到他的方法。(表示這個(gè)類可以被OC使用)
  3. 可以知道@objc是用來將Swift的API導(dǎo)出給Objective-C和Objective-C runtime使用的,如果你的類繼承自O(shè)bjective-c的類(如NSObject)將會(huì)自動(dòng)被編譯器插入@objc標(biāo)識(shí)。
  4. 純Swift類沒有動(dòng)態(tài)性,但在方法、屬性前添加dynamic修飾可以獲得動(dòng)態(tài)性。
    繼承自NSObject的Swift類,其繼承自父類的方法具有動(dòng)態(tài)性,其他自定義方法、屬性需要加dynamic修飾才可以獲得動(dòng)態(tài)性。
    若方法的參數(shù)、屬性類型為Swift特有、無法映射到Objective-C的類型(如Character、Tuple),則此方法、屬性無法添加dynamic修飾(會(huì)編譯錯(cuò)誤), dynamic破壞swift的靜態(tài)化
    Swift類在Objective-C中會(huì)有模塊前綴
  5. 所有運(yùn)行時(shí)方法都依賴TypeEncoding,也就是method_getTypeEncoding返回的結(jié)果,他指定了方法的參數(shù)類型以及在函數(shù)調(diào)用時(shí)參數(shù)入棧所要的內(nèi)存空間,沒有這個(gè)標(biāo)識(shí)就無法動(dòng)態(tài)的壓入?yún)?shù)(比如testReturnVoidWithaId: Optional("v24@0:8@16") Optional("v"),表示此方法參數(shù)共需24個(gè)字節(jié),返回值為void,第一個(gè)參數(shù)為id,第二個(gè)為selector,第三個(gè)為id),而Character和Tuple是Swift特有的,無法映射到OC的類型,更無法用OC的typeEncoding表示,也就沒法通過runtime獲取了。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載原文地址 Swift是蘋果2014年發(fā)布的編程開發(fā)語言,可與Objective-C共同運(yùn)行于Mac OS和iO...
    John_LS閱讀 4,332評(píng)論 2 31
  • 分析用例 我們拿一個(gè)純Swift類和一個(gè)繼承自NSObject的類的類來做分析,這兩個(gè)類里包含盡量多的Swift的...
    hahaYXXXJ閱讀 792評(píng)論 0 2
  • 轉(zhuǎn)載自:移動(dòng)開發(fā)前線 Swift是蘋果2014年發(fā)布的編程開發(fā)語言,可與Objective-C共同運(yùn)行于Mac O...
    MichleMin閱讀 1,078評(píng)論 0 0
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,035評(píng)論 4 61
  • 你說這個(gè)世界上有那么多美好的東西,也有那么多優(yōu)秀的人,真想全都占為自有啊。 可我們不能啊。因?yàn)槲覀儾皇巧系?,不能?..
    禾月姑娘閱讀 553評(píng)論 1 4

友情鏈接更多精彩內(nèi)容