0
我在尋找與IMP有關的信息,但是我發現的所有內容看起來都像是一種老練。是IMP和@selector有關嗎?
我可能是錯的,但是IMP表示一個方法的地址,所以如果你需要的話你可以把它作爲參數傳遞,對吧? 如果這是真的,不是@selector允許這麼做嗎?
如果有人能向我解釋這一點,我將不勝感激,因爲我真的迷失了。這將是很好,我可以提供有關使用IMP和@選擇器的一些信息。
我在尋找與IMP有關的信息,但是我發現的所有內容看起來都像是一種老練。是IMP和@selector有關嗎?
我可能是錯的,但是IMP表示一個方法的地址,所以如果你需要的話你可以把它作爲參數傳遞,對吧? 如果這是真的,不是@selector允許這麼做嗎?
如果有人能向我解釋這一點,我將不勝感激,因爲我真的迷失了。這將是很好,我可以提供有關使用IMP和@選擇器的一些信息。
@selector
解析爲SEL
可用於查找IMP
。正如你猜測的那樣,IMP
指向一個函數的實現,否則稱爲函數指針。
什麼目標C看起來像這樣[NSObject alloc]
看起來像這樣在C:
objc_msgSend(objc_getClass("NSObject"),sel_getUid("alloc"))
內部,objc_msgSend
將採取提供Class
和SEL
和使用像class_getMethodImplementation
東西拿到IMP
調用。
通常使用更高級別的接口(如Method
)和功能(如NSSelectorFromString
和NSClassFromString
)來處理運行時通常會更好。