Я разрабатываю приложение, которое должно выполнять некоторые swizzling. Я использую метод -(void)m1:(CMAcceleration)a;
с другим, который я предоставляю.
-(void)newM(id self, SEL _cmd, ...){
va_list args;
va_start(args, _cmd);
//...
NSInteger returnValue=((NSInteger(*)(id,SEL,...))origImp)(self,_cmd,args);
va_end(args);
}
Для того, чтобы его проглотить, я использую:
origImp=method_setImplementation(method, newImp);
Затем я обычно называю это как [ClassInstance m1:a];
Дело в том, что аргументы кажутся заполненными мусором, когда я ожидал структуру, подобную {name=type...}
, как описано в здесь. Мне нужно передать аргументы исходной реализации после выполнения какой-либо операции, например NSLog.
При поиске в Интернете кажется, что это проблема, связанная с симулятором, но я не уверен, и у меня нет доступа к устройству, чтобы подтвердить это.
Я делаю что-то не так или есть способ это исправить?
{name=type...}
? Покажите код того, как вы ожидали, что сможете использовать аргументы, как вы ожидали, что он будет вести себя, и как он ведет себя на самом деле. Также покажите пример вызова метода. - person Ken Thomases   schedule 14.12.2015