iPhone SDK后台线程调用其他方法

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]; } 这非常有效,但是当我想从已经存在的后台方法

我是一个看似直截了当的问题,我似乎找不到答案(这阻碍了我的应用程序)

我有一个运行paricular方法的背景线程:

-(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上键入了此链接)