2010-10-07 29 views
1

我是一个看似直截了当的问题,我似乎无法找到答案(它妨碍我的应用程序)。iPhone SDK后台线程调用其他方法

我有运行paricular方法在后台线程:

-(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];添加到新方法中以使其在后台运行?

任何建议将是非常有益的。我对此有点困惑。

非常感谢, 布雷特

回答

1

它会留在后台,在同一个线程它是从呼吁。

一些线程笔记考虑与此:

  • 它可能不是很明显,但如果你调用从后台线程定时器,定时器之前线程退出应该走下车,计时器将不会被调用。因此,建议您从主线程安装定时器。
  • 除非生成另一个线程,否则不需要另一个自动释放池。
  • 任何UI更新应该在主线程
0

你并不需要添加另一个自动释放池,你已经有足够的一个上完成。是的,所有来自该线程的调用都保留在该线程中,因此也可以“在后台”运行。例外情况是使用“performSelectorOnMainThread:”,这当然会使给定的选择器在主线程上执行:-)如果你想调用GUI方法(比如在UIImageView上设置图像),你应该确保所以在主线程上。请参阅文档“performSelectorOnMainThread:waitUntilDone:”(抱歉不给您链接,我正在iPad上输入此内容)。

相关问题