Я передаю цели и действия в UIButtons из значений словаря. Это отлично работает ИСКЛЮЧЕНИЕ, если я попытаюсь передать пару NSInvocation/invoke.addTarget сбой для пары NSInvocation/invoke
// |self| is a member of |MyClass|, which declares selector |test|
NSDictionary *button1Data = @{ @"selectorString" : NSStringFromSelector(@selector(test)),
@"target" : self };
[button1 addTarget:button1Data[@"target"]
action:NSSelectorFromString(button1Data[@"selectorString"])
forControlEvents:UIControlEventTouchUpInside];
// button1 executes target fine
NSInvocation *testInvocation = [NSInvocation invocationWithMethodSignature:[MyClass instanceMethodSignatureForSelector:@selector(test)]];
testInvocation.selector = @selector(test);
testInvocation.target = self;
[testInvocation retainArguments];
NSDictionary *button2Data = @{ @"selectorString" : NSStringFromSelector(@selector(invoke)),
@"target" : testInvocation };
[button2 addTarget:button2Data[@"target"]
action:NSSelectorFromString(button2Data[@"selectorString"])
forControlEvents:UIControlEventTouchUpInside];
// button2 executes gives exceptions
Исключения из кнопки2 не имеют регистрационных дампов.
Что я могу увидеть?
Вы говорите: «отлично работает, ИСКЛЮЧАЕТ», но не говорите, как он не работает. – newacct