遅延実行
performSelector:withObject:afterDelay:
複数の引数を遅延実行させたい
NSMethodSignature *sig = [columnMaker methodSignatureForSelector:@selector(hoge:)];
NSInvocation *inv = [NSInvocation invocationWithMethodSignature:sig];
[inv setTarget:obj];
[inv setArgument:&cell atIndex:2];
[inv setSelector:@selector(hoge:)];
[inv invokeWithTarget:obj];
setArgumentを増やしていけば良い。(adIndexが2からなのは0はtarget、1は_cmdだから)
メソッドにまとめてみた。
-(void)performMethodToTarget:(id)target selector:(SEL)selector arguments:(NSArray *)arguments
{
NSMethodSignature *sig = [target methodSignatureForSelector:selector];
NSInvocation *inv = [NSInvocation invocationWithMethodSignature:sig];
[inv setTarget:target];
int i=2;
for (id arg in arguments) {
[inv setArgument:&arg atIndex:i];
i++;
}
[inv setSelector:selector];
[inv invokeWithTarget:target];
}
NSInvocationを簡単に
最終更新:2012年03月21日 17:40