我是一个看似简单的问题,我似乎无法找到答案(而且它阻碍了我的应用)。
我有一个运行特定方法的后台线程:
-(void)processImage:(UIImage *)image {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
//Process image here in the background here
[pool drain];
}
这非常有用,但是当我想从已经背景的方法中调用另一个方法时,我的问题出现了。这个电话是否留在后台?我是否需要在新方法中添加NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
和[pool drain];
以使其在后台运行?
任何建议都会非常有帮助。我对此感到有点困惑。
非常感谢, 布雷特
答案 0 :(得分:1)
它将保留在后台,与调用它的同一个线程。
要考虑的一些线程说明:
答案 1 :(得分:0)
您不需要添加另一个自动释放池,您已经拥有的就足够了。是的,你所做的所有来自该线程的调用都保留在该线程中,因此也在“后台”运行。例外是使用“performSelectorOnMainThread:”,这当然使得给定的选择器在主线程上执行:-)如果你想调用GUI方法(比如在UIImageView上设置图像)你应该确保做所以在主线程上。请参阅“performSelectorOnMainThread:waitUntilDone:”的文档(很抱歉没有给你链接,我在iPad上输入了这个链接)。