2013-06-21 34 views
0

我在尋找與IMP有關的信息,但是我發現的所有內容看起來都像是一種老練。是IMP和@selector有關嗎?

我可能是錯的,但是IMP表示一個方法的地址,所以如果你需要的話你可以把它作爲參數傳遞,對吧? 如果這是真的,不是@selector允許這麼做嗎?

如果有人能向我解釋這一點,我將不勝感激,因爲我真的迷失了。這將是很好,我可以提供有關使用IMP和@選擇器的一些信息。

回答

1

@selector解析爲SEL可用於查找IMP。正如你猜測的那樣,IMP指向一個函數的實現,否則稱爲函數指針。

什麼目標C看起來像這樣[NSObject alloc]看起來像這樣在C:

objc_msgSend(objc_getClass("NSObject"),sel_getUid("alloc")) 

內部,objc_msgSend將採取提供ClassSEL和使用像class_getMethodImplementation東西拿到IMP調用。

通常使用更高級別的接口(如Method)和功能(如NSSelectorFromStringNSClassFromString)來處理運行時通常會更好。

相關問題