【发布时间】:2013-03-27 11:12:38
【问题描述】:
我有一个运行常规服务器同步过程的 iPad 应用程序 - 它每 10 秒左右运行一次。同步过程下载插入到基于 CoreData SQL 的存储中的记录。有时,正在处理的记录数可能达到数百或数千。
当前同步过程基于由主线程触发的Asynchronous NSURLConnection。当async 调用收集到所有NSData 后,主线程会在后台触发NSOperation 以解析NSData 并将其插入数据库。
因此,NSURLConnection 正在异步运行,而 db insert 正在后台运行 NSOperation。但是,NSURLConnection 和NSOperation 的编排是在主线程中完成的。鉴于正在下载大量数据,我认为即使是主线程上的少量编排也可能会影响我的 UI 响应能力。
所以,我正在考虑将代码重构为单个背景NSOperation,并将NSURLConnection 变为同步调用。然后单个NSOperation 将同步下载NSData 并管理数据库插入。
在我着手进行相当大的重构之前,我会对人们对这是否是一个好的决定的看法感兴趣。
对于当前的机制,我注意到 UI 中偶尔会出现一些犹豫。通过将整个机制置于后台 NSOperation 我希望 UI 将保持响应。
任何智慧之言将不胜感激。
谢谢。
【问题讨论】:
标签: objective-c cocoa-touch nsurlconnection nsoperation nsoperationqueue