У меня была проблема, когда мне нужно было использовать afterDelay
вместе с несколькими аргументами для моего @selector
метода. Решение? Используйте функцию-обертку!
Скажите, что это функция, которую я хочу передать на @selector
:
-(void)myFunct:(NSString *)arg1 andArg:(NSString *)arg2 andYetAnotherArg:(NSString *)arg3;
Очевидно, я даже не могу использовать withObject: withObject:
здесь, поэтому сделайте обертку!
-(void)myFunctWrapper:(NSArray *)myArgs {
[self myFunct:[myArgs objectAtIndex:0] andArg:[myArgs objectAtIndex:1] andYetAnotherArg:[myArgs objectAtIndex:2]];
}
и используйте его, выполнив:
NSArray *argArray = [NSArray arrayWithObjects:string1,string2,string3,nil];
[self performSelector:@selector(myFunctWrapper:) withObject:argArray afterDelay:1.0];
Таким образом, я могу иметь несколько аргументов и использовать селектор с задержкой.