遅延実行

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