Я хочу запустить простое профилирование для функции.Когда функция начинает работать, таймер включается.по завершении в журнал заносится время:
-(int) myFunc {
[MyProfileService startTimer:@"myFuncTimer"];
... code ...
[MyProfileService stopTimer:@"myFuncTimer"];
return result;
}
Это решение работает с рабочим кодом.более элегантным решением было бы статически зарегистрировать таймер в методе инициализации класса:
@implementation MyClass {
+(void) initialize {
[MyProfileService monitorFunction:@Selector(myFunc) inClass[Myclass class]];
}
Для этого мне нужно заменить реализацию myFunc новой реализацией:
-(void) runProfileFunc(....) {
[MyProfileService startTimer:@"myFuncTimer"];
id result = [MyClass performSelector:@selector(myFunc) withObject: ...];
[MyProfileService stopTimer:@"myFuncTimer"];
return result;
}
с помощью objc / runtime я могу переключать функции во время выполнения.Как мне скопировать оригинальную подпись функции и передать параметры исходной функции внутри оболочки?