引用framework 類別方法奔潰問題

2021-07-05 17:09:28 字數 434 閱讀 4559

解決方法為:找到 target 的圖示,更改其 other linker flags 為: -all_load 或 -force_load

-force_load,後跟隨乙個檔案位置,可以更精確地載入所需檔案。

簡單點說就是,objective-c 的動態特性使得需要,為鏈結器新增乙個標籤(設定 other linker flags 為 -objc)來解決通過 category 向類新增方法的問題。

但這個標籤 -objc 在 64 位 和 ios 中有問題,需要使用 -all_load 或 -force_load。

總結如下:

如果,第三庫中沒有 category,other linker flags 無需設定

如果,第三方庫中有 category,需要設定為 -objc

如果,某些 xcode 版本中,出現問題,修改設定為 -all_load

對多級類別中按類別搜尋的方法

一般的實現多級類別是用樹來實現的,而樹一般有兩種實現的方法,一種是每個節點記錄他的父節點,另一種是利用編號來實現。編號的實現 例如根節點的子節點用兩位編號了表示,而這些子節點的子節點用四位編號來實現,四位中的前兩位是它父節點的編號,後兩位是自己的編號。如此類推。00 a 01 b 0000 c 00...

反編譯framework原始碼的方法

工作中經常遇到很多第三方應用或rom需要反編譯看原始碼實現,對於第三方應用很簡單拿到apk檔案後直接用apktool解開就可以了。但是對於系統應用或framework模組部分就不行了,因為廠包肯定會開啟odex,所以將apk或jar包pull到本地後會發現裡面只有資源檔案或meta inf等,裡面沒...

OC中類別的向前引用和非正式協議

cocoa沒有任何真正的私有方法,如果你知道物件支援的某個方法,即使該物件所在的類的介面中沒有宣告該方法,你也可以呼叫它。但是編譯器發現你呼叫物件的某個方法,沒有找到該方法的宣告會報錯。如果在類別中宣告了該方法,編譯器就知道該方法已經存在了,不管有沒有在類別中去實現。編譯器顯示報錯。在定義類別後正常...