【发布时间】:2015-01-04 08:20:22
【问题描述】:
刚刚在Apple docs:找到
注意:虽然适用于线程间的偶尔通信,但您不应将
performSelector:onThread:withObject:waitUntilDone:方法用于线程间时间紧迫或频繁的通信。
为什么会这样? “频繁”是多少?
我有一个应用程序,它有很多线程,并且在主线程中发生了很多事情(大量的 JavaScript,WebKit 中频繁的 Ajax 查询)。在 Yosemite 上,我开始遇到多个(比如 10 个)文件下载 (NSURLDownloads) 和 WebKit GUI(需要在主线程中运行)组合的巨大问题。
对于由 JavaScript 大量加载的 WebKit,文件下载无法“存活”很长时间。在某些时候,所有网络请求都会开始返回超时(错误 -1001),直到应用退出。
我广泛使用performSelector:onThread:withObject:waitUntilDone:,例如通知 UI 下载进度。这可以每秒发生多次。会不会是问题?
附:不幸的是,我不允许展示整个源代码...
【问题讨论】:
标签: multithreading cocoa