Используйте methodForSelector:
, который возвращает указатель функции на фактическую реализацию, например:
IMP methodImp = [target methodForSelector:msg];
for (int i=0; i<1000; ++i) {
NSTimeInterval start = [NSDate timeIntervalSinceReferenceDate];
methodImp(target, msg);
NSTimeInterval duration = [NSDate timeIntervalSinceReferenceDate] - start;
// Do something with duration
}
Обратите внимание, что эта стратегия полезна для измерения фактического времени выполнения метода, но если вы собираетесь вызывать его со стандартным синтаксисом передачи сообщений Objective-C, то может быть также уместно включить сообщение- превышение ваших измерений.
Также обратите внимание, что если метод на самом деле принимает какие-либо другие параметры, вы должны привести результат methodForSelector:
к указателю функции с соответствующими параметрами, чтобы избежать непредвиденного преобразования чисел с плавающей запятой в двойные и т. Д. См. Ссылка на класс NSObject для получения дополнительной информации и примеров.