objective-c – performSelectorInBackground和NSOperation Subclass之间的区别

objective-c – performSelectorInBackground和NSOperation Subclass之间的区别,第1张

概述我创建了一个测试应用程序来运行深度计数器循环.我使用performSelectorInBackground和NSOperation子类分别在后台线程中运行循环函数. 我也使用performSelectorOnMainThread来通知backthread方法中的主线程和NSOperation子类中的[NSNotificationCenter defaultCenter] postNotificat 我创建了一个测试应用程序来运行深度计数器循环.我使用performSelectorInBackground和NSOperation子类分别在后台线程中运行循环函数.

我也使用performSelectorOnMainThread来通知backthread方法中的主线程和NSOperation子类中的[NSNotificationCenter defaultCenter] postNotificationname来通知主线程更新UI.

最初这两个实现都给了我相同的结果,我能够更新UI而不会有任何问题.我找到的唯一区别是两个实现之间的线程计数.

performSelectorInBackground实现创建了一个线程,并在循环完成后终止,我的应用程序线程计数再次变为1.

NSOperation子类实现创建了两个新线程并保持在应用程序中,我可以在main()函数中完成循环后看到3个线程.

所以,我的问题是为什么NSOperation创建了两个线程,为什么它没有像第一个后台线程实现一样被终止?

我有点困惑,无法确定哪种实现在性能和内存管理方面最佳.

解决方法 *** 作队列很可能保持线程处于活动状态,等待新 *** 作出现.

您必须记住, *** 作队列旨在高效地处理许多 *** 作,因此为每个 *** 作创建和销毁线程会损害性能.所以你所看到的可能就是通过保持线程池活着来设计队列的方式.

基本上,只要您正确使用 *** 作队列并根据文档我就不用担心了.

总结

以上是内存溢出为你收集整理的objective-c – performSelectorInBackground和NSOperation Subclass之间的区别全部内容,希望文章能够帮你解决objective-c – performSelectorInBackground和NSOperation Subclass之间的区别所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1034267.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存