Связаны IMP и @selector?
Я искал информацию, связанную с IMP, но все, что я нахожу, выглядит как старая практика.
Я могу ошибаться, но IMP представляет адрес метода, так что вы можете передать его в качестве аргумента, если вам нужно, верно? Если это правда, не разрешает ли @selector это?
Буду признателен, если кто-нибудь сможет мне это объяснить, потому что я действительно заблудился. Было бы хорошо, если бы мне предоставили некоторую информацию об использовании IMP и @selector.
1 ответ
@selector
решает к SEL
который может быть использован для поиска IMP
, Как вы и предполагали, IMP
указывает на реализацию функции, иначе называемой указателем функции.
Как это выглядит [NSObject alloc]
в цели C выглядит так в C:
objc_msgSend(objc_getClass("NSObject"),sel_getUid("alloc"))
Внутренне objc_msgSend
возьму при условии Class
а также SEL
и использовать что-то вроде class_getMethodImplementation
чтобы получить IMP
вызывать.
Как правило, лучше использовать интерфейсы более высокого уровня, такие как Method
и функции как NSSelectorFromString
а также NSClassFromString
иметь дело со временем выполнения.