- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题是针对那些与我不同的人,真正了解 cocoa 应用程序中的多线程。简要介绍一下情况:
情况:
我的应用程序通过使用 NSObject 中提供的方法实现并发。请告诉我是否可以执行以下操作:
1) 我的主视图 Controller 在后台启动一些工作以释放 UI:
[self performSelectorInBackground:@selector(loadImages:) withObject:nil];
2) 后台工作将其任务划分为更多后台线程上的几个较小的任务,以便每个任务在完成时更新(而不是在所有任务完成时更新):
[self performSelectorInBackground:@selector(loadOneImage:) withObject:nil];
基本原理:
这是我发明的唯一方法,可以让一组任务(加载/绘制自定义 UIViews)在每个完成后在 UI 中更新。否则,只有当组中的最后一个任务完成时,所有任务才会更新...
最佳答案
是的,您可以使用 performSelectorInBackground:...
调用从辅助线程生成辅助线程。
如果您有很多线程要生成(以这种方式),请考虑使用 NSOperationQueue
。否则,您可能会遇到大量后台线程。例如,100 个线程,每个线程在移动设备中加载一张图像,这并不是一种很好的资源利用方式,也不会产生响应。 NSOperationQueue
允许您限制线程/工作线程的最大数量,并重用工作线程。
注意:使用“100 个线程”是因为这个数字远远超出了硬件的逻辑范围(问题标记为 iPhone)。如果您的图像加载全部在内存中,则只需使用串行(一次 1 个工作程序)NSOperationQueue - NSOperations 可以指定优先级。如果正在下载图像,那么您可能需要坚持 4 个或更少。
OS X 上的情况有所不同,OS X 上有更多的内核和可用资源,因此这些数字会随着硬件平台的变化而变化。在 OS X 上,您可以在一个应用程序中成功使用 100 个线程,尽管大多数应用程序需要接近这么多线程的情况并不常见。
关于iphone - 可以从其他后台线程启动后台线程吗? (NSObj),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5001638/
这个问题是针对那些与我不同的人,真正了解 cocoa 应用程序中的多线程。简要介绍一下情况: 情况: 我的应用程序通过使用 NSObject 中提供的方法实现并发。请告诉我是否可以执行以下操作: 1)
我是一名优秀的程序员,十分优秀!