Macos 从NSOperation启动下载时未调用NSURLDownloadDelegate

Macos 从NSOperation启动下载时未调用NSURLDownloadDelegate,macos,cocoa,nsoperation,Macos,Cocoa,Nsoperation,我刚刚将我的应用程序切换到使用NSOperationQueue来管理下载队列。我在NSOperation子类中启动NSURLDownloads并处理它们的所有委托回调。然而,当我刚开始测试它时,我发现没有调用任何委托方法。我在网上找到了一些关于这是NSURLDownload的一个已知问题的信息(我发现它只将委托消息发布到主线程),但NSURLDownload类参考说明: “请注意,这些委托方法是在启动关联NSURLDownload对象的异步加载操作的线程上调用的。” 这让我觉得这个错误至少应该在

我刚刚将我的应用程序切换到使用NSOperationQueue来管理下载队列。我在NSOperation子类中启动NSURLDownloads并处理它们的所有委托回调。然而,当我刚开始测试它时,我发现没有调用任何委托方法。我在网上找到了一些关于这是NSURLDownload的一个已知问题的信息(我发现它只将委托消息发布到主线程),但NSURLDownload类参考说明:

“请注意,这些委托方法是在启动关联NSURLDownload对象的异步加载操作的线程上调用的。”

这让我觉得这个错误至少应该在Lion中修复。然而,我运行的是10.7.2,NSURLDownload对我来说绝对是不正确的。这里有我遗漏的东西吗?我没有在头文件中声明委托方法,但这不重要。。。是吗

(我知道另一种选择是使用NSURLConnection。不过,我真的希望能够使用NSURLConnection的下载进度功能。)

我已将NSOperation子类设置为并发运行:我已重写start而不是main

提前感谢你在这方面给我的任何帮助

萨姆


另外,我也将这篇文章发布到苹果开发论坛上,希望更多的人能看到它。

NSURLDownload向nsrunlop注册以提供其回调功能。每个runloop都绑定到一个特定的线程。在您的示例中,在NSO操作中,您设置了NSURLDownload,它向runloop注册您的操作所运行的线程(这是不确定的)。但是,在退出-start或-main方法后,线程(及其runloop)可能会被拆掉

有关类似问题,请参阅