我试图通过从NSOperation创建NSOperation。我希望我的操作在单独的线程上执行以及它应该支持取消选项,即我应该能够在任何时间点停止线程(或操作)。我尝试将我的操作实例添加到NSOperationQueue,一切正常,但“操作”正在执行一段时间后,这使得我的应用程序变慢。因此,我尝试通过调用[theOperation start];
它的速度很快,但在主线程上执行单独运行我的操作。如何使NSOperation在单独的线程上运行,取消选项请帮助。如何使NSOperation无法在iPhone中添加到NSOperationQueue中
回答
之一:
1)不让它的的NSOperation,并明确创建线程。
2)使用第二操作队列和/或增加优先级。
3)使用容器类型作为结果。当您立即需要时,取消后台加载操作并手动加载。
我相信你需要实现- (BOOL)isConcurrent
:
- (BOOL)isConcurrent
{
return YES;
}
但也有问题。请阅读Apple reference docs on NSOperation,特别是子类别备注。另请注意,如果您希望操作可以取消,您需要自己执行取消操作:例如,在您的main
选择器中,您需要检查操作是否已被取消,并立即返回(如果有)。
我从'isConcurrent'方法返回'YES',但它没有在单独的线程上运行,它阻止了我的主线程。 – Hariprasad
在你的'start'方法中,你是否同时启动你的任务,即调用'performSelectorInBackground:'或类似的?文档说你需要覆盖'start','isExecuting'和'isFinished'以及'isConcurrent'。 – damian
我试着在backGround中调用启动方法的代码,但在那种情况下,我无法实现取消功能。 – Hariprasad
- 1. 如何使用NSOperation和NSOperationQueue
- 2. 如何在NSOperationQueue中暂停NSOperation?
- 3. NSOperationQueue,NSOperation
- 4. NSOperation存在于NSOperationQueue
- 5. NSOperationQueue INSIDE an NSOperation
- 6. 取消NSOperation从NSOperationQueue
- 7. NSOperation和NSOperationQueue回调
- 8. 在iOS 4(iPhone)上使用NSInvocationOperation(NSOperation)和NSOperationQueue的主要放缓
- 9. 在NSOperationQueue中添加操作
- 10. 如何使用以及在何处使用的NSOperation和NSOperationQueue>
- 11. 从NSOperation添加NSOperation
- 12. iOS - 如何检查NSOperation是否在NSOperationQueue中?
- 13. 从NSOperation内取消NSOperationQueue
- 14. NSOperation&NSOperationQueue冻结应用
- 15. 无法在iPhone中使用ABGroupAddMember在组中添加联系人?
- 16. 建议在IPhone中使用NSOperationQueue ap
- 17. 如何在NSOperationQueue完成之前阻止NSOperation?
- 18. NSOperation无法在TableView上加载数据
- 19. iphone,如何创建NSOperationQueue
- 20. 从NSOperationQueue取消NSOperation导致崩溃
- 21. NSOperation运行但从NSOperationQueue丢失
- 22. NSOperationQueue和NSOperation,我必须发布它吗?
- 23. NSOperation和NSOperationQueue的后台任务iOS
- 24. 如何从NSOperation获取对NSOperationQueue的引用?
- 25. iphone sdk:如何将事件添加到UIButton UIWebView中添加
- 26. 如何在iphone中的viewcontroller中添加tabbarcontroller在iphone
- 27. 如何在iphone中添加时间?
- 28. 如何在uiscrollview中添加uiview iphone/ipad
- 29. 如何在iphone中添加initloader
- 30. NSOperation和fwrite(Iphone)
你使用了哪个操作队列:'mainQueue'或你自己创建的实例? – Eimantas
我通过分配NSOperationQueue类来使用NSOperationQueue的实例。 – Hariprasad