在启动线程的情况下,我还能访问父线程上的方法吗?有没有特定的方法来调用这个方法?如果是这样,它是什么?
注意:在我的场景中,两个线程都用于数据操作,它们不是与接口(interface)相关的线程(我知道这是在 .NET 中考虑的,但不知道它们在 Objective-c 中)。
最佳答案
在这种情况下,最好使用 Grand Central Dispatch (GCD) 而不是直接使用 NSHead 或 NSOperation。
Grand Central Dispatch 简介:http://cocoasamurai.blogspot.com/2009/09/guide-to-blocks-grand-central-dispatch.html
对于您的示例,您可以使用对 Grand Central Dispatch 的嵌套调用来实现此功能:
dispatch_queue_t backgroundQueue = dispatch_queue_create("com.example.exampleQueue", 0);
dispatch_async(backgroundQueue, ^{
// operate on data in the background here
NSData *stuff = [self doSomethingComplex];
dispatch_async(dispatch_get_main_queue(), ^{
// Perform Task back in the main thread
[viewController updateStuff:stuff];
});
});
此方法是执行此类任务的首选方法。此外,通过使用 block ,一目了然地理解代码也非常容易,而无需在类中示例多个方法。
关于iphone - 多线程在 Objective-C 中是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6981601/