如何在Objective C中调度方法调用

时间:2010-06-16 21:09:13

标签: objective-c multithreading

我尝试在Objective C中进行多线程处理。 我现在想做的是, 对于某些对象实例, 我想要在5秒后调用某个函数。 我怎么能这样做?

在Coco 2D中,它很容易实现。他们有一个叫调度程序的东西。 在目标C中,该怎么做呢?

由于

2 个答案:

答案 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];