1、swizzling 需要在 load() 方法中使用。為了保證 swizzling 只執(zhí)行一次键袱,需要使用 dispatch_once 。load 只要引用就會(huì)被調(diào)用摹闽。 initialize 是類或子類使用第一個(gè)方法前調(diào)用的蹄咖。
2、使用場景:
1)在 dealloc 方法中付鹿,添加 NSLog 澜汤,提示哪個(gè)類被釋放。
2)判斷字典或數(shù)組是否為空舵匾。
3)追蹤每一個(gè)控制器呈現(xiàn)給用戶的次數(shù)俊抵,在 viewdidappear 方法中添加追蹤代碼。
3坐梯、Selector 是一個(gè)在運(yùn)行時(shí)被注冊(cè)(或映射)的 C 類型字符串务蝠。由編譯器產(chǎn)生并且當(dāng)類被加載時(shí),進(jìn)入內(nèi)存時(shí),由運(yùn)行時(shí)自動(dòng)進(jìn)行名字和實(shí)現(xiàn)的映射馏段。
Method 是一個(gè)不透明的用來代表一個(gè)方法的定義的類型轩拨。
Implementation
// 在運(yùn)行時(shí)中,
Class (維護(hù)) ->
一個(gè) Method:Selector 表 (Selector 指向) -> //method-swizzling 在這個(gè)位置改變 Selector 指向的 Implementation 院喜,并且給之前的 Implementation 實(shí)現(xiàn)一個(gè)新的 Selector 亡蓉。
Implementation 表