NSInvocation
非同期で3秒後にこのメソッド実行したいってなった時に
+ (void)afterRunMethod:(id)target action:(SEL)action args:(NSArray *)args delay:(CGFloat)delay {
NSMethodSignature *sig = [target methodSignatureForSelector:action];
NSInvocation *inv = [NSInvocation invocationWithMethodSignature:sig];
[inv setTarget:target];
[inv setSelector:action];
NSInteger i=2;
for(id arg in args){
[inv setArgument:(void *)&arg atIndex:i];
i++;
}
[inv performSelector:@selector(invoke) withObject:nil afterDelay:delay];
}
こんな感じのメソッド用意してやってるんだけど、毎回targetとactionを設定するのがめんどいので
typedef void (^func_t)(void);
+ (void)afterRunMethod:(func_t)func args:(NSArray *)args
こんな感じでやりたいんだけど、だれかいい方法しりませんかね?
============自己解決===========
+ (void)runBlock:(void (^)())block
{
block();
}
こんなん一個用意しておけば解決することに気づいた。
俺あほや・・・・、