我尝试在Objective C中进行多线程处理。 我现在想做的是, 对于某些对象实例, 我想要在5秒后调用某个函数。 我怎么能这样做?
在Coco 2D中,它很容易实现。他们有一个叫调度程序的东西。 在目标C中,该怎么做呢?
由于
答案 0 :(得分:14)
您可以使用 performSelector:withObject:afterDelay :
例如:
[self performSelector:@selector(myFunc:) withObject:nil afterDelay:5.0];
答案 1 :(得分:2)
添加到已经说过的内容,如果你想将一个参数传递给myFunc,可以按如下方式修改调用
[self performSelector:@selector(showNote:) withObject:@"S" afterDelay:1.0];
如果你需要调用一个带有多个参数的方法,你可以使用调用来实现,如下面的代码片段所示 -
SEL selector = @selector(nextPicture:);
NSMethodSignature *signature = [[self class] instanceMethodSignatureForSelector:selector];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
[invocation setSelector:selector];
//Set the arguments
[invocation setTarget:self];
NSString* str = [imageNames objectAtIndex:1];
[invocation setArgument:&str atIndex:2];
[NSTimer scheduledTimerWithTimeInterval:5.0f invocation:invocation repeats:NO];