Связаны 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 иметь дело со временем выполнения.

Другие вопросы по тегам