使用執行時函式實現方法交換

2022-07-08 07:24:07 字數 482 閱讀 6109

通過objc/runtime.h函式庫,可以做一些比較有趣的修改,比如平常在使用[uiimage imagenamed:]方法時,即便字串名稱填寫錯誤,程式編譯或執行時系統都不會提示出錯。此處給原方法新增乙個小改動,當image為nil時,使用nslog列印輸出臺的方式提醒「載入失敗」

#import "uiimage+myimagenamed.h"

#import @implementation uiimage (myimagenamed)

+(void)load

+(uiimage *)myimagenamed:(nsstring *)name

return image;

}@end

好處:無須在原專案檔案在import分類,也無須修改原方法名,即在不對原**進行任何修改的基礎,僅需新增分類方法即可實現原系統方法的改進

執行時(runtime) 方法交換

1 建立乙個 person 類,並定義兩個方法 study 和 run,分別實現 import person.h implementation person void study void run end 2 正常呼叫方法 int main int argc,const char argv 執行程式...

執行時交換系統方法

ios7 開啟了扁平化 如果版本更迭,更換要求會特別大,維護起來十分困難,這個時候我們就可以使用執行時攔截設定過程 只需要修改底層的 就可以省卻繁雜的維護過程 首先我們建立乙個分類 但是這種方法不可取,一旦重寫系統方法就會被替代,無法設定,所以需要我們修改執行時來解決問題 可以在load方法中執行 ...

iOS 執行時使用 交換兩個方法

舉例 在建立了如下 nsstring str nil nsurl url nsurl urlwithstring str nslog url 但是想使用自己的方法並對傳入的字串做為空判斷 舉例 自己寫了乙個方法 instancetype sjurlwithstr nsstring str 替代系統方...