iPhone SDK后台线程调用其他方法
我是一个看似直截了当的问题,我似乎找不到答案(这阻碍了我的应用程序) 我有一个运行paricular方法的背景线程:iPhone SDK后台线程调用其他方法,iphone,objective-c,Iphone,Objective C,我是一个看似直截了当的问题,我似乎找不到答案(这阻碍了我的应用程序) 我有一个运行paricular方法的背景线程: -(void)processImage:(UIImage *)image { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; //Process image here in the background here [pool drain]; } 这非常有效,但是当我想从已经存在的后台方法
-(void)processImage:(UIImage *)image {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
//Process image here in the background here
[pool drain];
}
这非常有效,但是当我想从已经存在的后台方法中调用另一个方法时,我的问题就来了。这个电话在后台吗?我是否需要添加NSAutoreleasePool*pool=[[NSAutoreleasePool alloc]init]代码>和[池排水]代码>到新方法以使其也在后台运行
任何建议都会很有帮助。我对此有点困惑
非常感谢,,
Brett它将保留在后台,与从中调用它的线程相同
一些要考虑的线程注释:
- 这可能不明显,但如果您从后台线程调用计时器,并且该线程在计时器应该关闭之前退出,则不会调用计时器。因此,建议您从主线程设置计时器
- 除非生成另一个线程,否则不需要另一个自动释放池
- 任何UI更新都应该在主线程上完成
它将保留在后台,与从中调用它的线程相同
一些要考虑的线程注释:
- 这可能不明显,但如果您从后台线程调用计时器,并且该线程在计时器应该关闭之前退出,则不会调用计时器。因此,建议您从主线程设置计时器
- 除非生成另一个线程,否则不需要另一个自动释放池
- 任何UI更新都应该在主线程上完成
您不需要再添加一个自动释放池,您已经拥有的已经足够了。是的,所有来自该线程的调用都会留在该线程中,因此也会“在后台”运行。例外情况是使用“performSelectorOnMainThread:”,这当然会使给定的选择器在主线程上执行:-)如果要调用GUI方法(如在UIImageView上设置图像),应确保在主线程上执行。请参阅文档中的“performSelectorOnMainThread:waitUntilDone:”(很抱歉没有给您提供链接,我正在我的iPad上键入此链接)。您不需要再添加一个自动释放池,您已经拥有的已经足够了。是的,所有来自该线程的调用都会留在该线程中,因此也会“在后台”运行。例外情况是使用“performSelectorOnMainThread:”,这当然会使给定的选择器在主线程上执行:-)如果要调用GUI方法(如在UIImageView上设置图像),应确保在主线程上执行。请参阅文档中的“performSelectorOnMainThread:waitUntilDone:”(很抱歉没有给您提供链接,我在我的iPad上键入了此链接)