- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从主线程创建一个单独的线程并在那里执行一些进程。例如:当我浏览应用程序屏幕(导航 Controller 、 View Controller 等)时,我还希望有另一个线程,其中一些上传过程应该在后台进行。
如何在 iOS 开发中实现这一目标?请指导我。
谢谢!
最佳答案
有很多选项,太多了,无法详尽列出,但也许孵化单个附加线程的最简单方法是 performSelectorInBackground:withObject: ,例如
[self performSelectorInBackground:@selector(doSomething:) withObject:nil];
- (void)doSomething:(id)object
{
NSLog(@"I'm running on a separate thread!");
}
还有performSelectorOnMainThread:withObject:waitUntilDone:用于将事物推回到 UIKit 的主线程以及将选择器分派(dispatch)到特定其他线程的各种其他方法。
您可以直接联系NSThread如果您想调整优先级或以更具体的方式孵化线程。无论哪种情况都要小心,因为除非您自己创建一个自动释放池,否则您的后台线程中不会有自动释放池。
如果您计划发出大量线程,您可能会按 NSInvocationOperations到 NSOperationQueue 。操作队列确保操作以最佳方式分发到后台线程,以适合您设备拥有的 CPU 和内核数量。
不过,您应该完全确定您需要一个后台线程。作为一般经验法则,如果某件事能够同步或异步操作(发布到主线程),则后者是更有效的处理方式,特别是在电池生命周期方面。新的基于 block 的异步方法使编写应该执行简单线性操作的事件驱动代码省去了很多麻烦,因此如果您可以坚持使用 iOS 4 及更高版本,请检查这些。
关于iPhone:创建另一个线程并执行一些进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5465176/
我是一名优秀的程序员,十分优秀!