Как сказано выше, вы можете передать селектор метода, который вы хотите вызвать. Используя селектор, существуют разные способы вызова метода:
- с использованием
NSObject
s performSelector:
, performSelector:withObject:
и performSelector:withObject:withObject:
методов
- с использованием
NSInvocation
объекта
- или напрямую, используя
objc_msgSend
или objc_msgSend_stret
- используя
IMP
того метода, который вы можете получить, используя methodForSelector:
Какой из них использовать, действительно зависит от ситуации. Если производительность не критична, я выберу 1, если вам нужно передать 0, 1 или 2 объекта. Если методы performSelector:...
не совпадают, я бы выбрал 2 или 3. Поскольку настройка объекта NSInvocation
требует большого количества стандартного кода, я предпочитаю 3, но я полагаю, что это вопрос личного выбора, если только нет проблемы с производительностью.
Если производительность этих вызовов методов имеет значение, я бы использовал 3 или 4. 3 должно быть быстрее, если вы не можете кэшировать IMP
s. Но в зависимости от вашего кода это может быть неосуществимо или не очень помогает. Так что здесь вы должны профилировать код и посмотреть, какой из них лучше для вас.