如何在目标c中运行多个线程?

时间:2010-08-07 11:45:38

标签: iphone objective-c

我有一些在计时器中运行的代码,但我想同时运行一些代码。

如何在目标c中运行线程?

我可以将当​​前代码放在方法中,只需启动线程并在每个线程中调用该方法吗?

3 个答案:

答案 0 :(得分:4)

直接答案是肯定的:使用NSThread 你可以这样做:

 [NSThread detachNewThreadSelector:@selector(myThreadMethod:) toTarget:self withObject:someOptions];

这将创建一个新的Thread并调用您在某个对象上定义的某个方法。一个常见的缺陷是,如果您不使用垃圾收集,则需要在线程中创建单独的NSAutoreleasePool。在上面的这种情况下,它可能看起来像这样:

- (void)myThreadMethod:(id)options
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    ... // your method contents here

    [pool release];
}

但是,正如其他人已经指出的那样,应该不再使用线程。它们被NSOperations,Blocks和GrandCentralDispatch取代。

答案 1 :(得分:2)

答案 2 :(得分:1)

您可以使用NSOperationQueue。我不确定它适用于哪种版本的iOS。