我正在开发iPad应用程序。它使用NSOperation在后台下载一些东西,由NSOperationQueue处理。我发现,除非向NSOperation添加保留,否则在执行操作的操作后,我会发生崩溃。 NSOperationQueue的addOperation表示它保留NSOperation,而NSOperation本身保留目标对象。因此,我不理解为什么需要额外的保留。NSOperation需要额外保留
这不会阻碍我的进步,除非我试图实现取消异步操作并在其位置创建新模式的模式。我目前还无法在iPhone OS 4.0上开发它(它提供了waitUntilFinished),所以我需要另一种方法来知道释放我的额外保留是安全的(或者找到一种方法来避免额外保留)。
有什么建议吗?
这听起来像是搞砸了。你能发布你的代码吗? – 2010-06-28 18:33:19
该代码可能有点太复杂,无法发布。然而,这个模式正如问题所述。 i: NSOperation * op = [[[NSInvocationOperation alloc] initWithTarget:self selector:@selector(someSelector :) object:client] autorelease]; [myOpQueue addOperation:op]; 如果我不在op上额外保留,我在someSelector运行后遇到崩溃。自我是一个存在的单身人士,而客户应该由op保留。 – Shaheen 2010-06-28 18:42:23