由于一个众所周知的事实是处理器繁重的工作需要在非UI线程上,所以我们将其视为后台线程。现在在我的情况下,我正在从feed解析数据,然后将这些解析的数据插入到DataBase中。我想在我的后台主题上处理此“数据解析”,使UI
主题响应保持用户互动。现在我的想法是在应用程序启动后立即启动此解析。
我完全不知道如何在IOS中处理线程。
请有人帮帮我。
答案 0 :(得分:2)
Rohan,如果您希望从服务器下载数据,请将数据插入设备上的本地数据库并且顺序很重要,那么我建议您研究异步请求,例如使用 ASIHttpRequest 或 AFNetworking 库。
这比使用多线程编程更好。
我不是大师,但根据我自己的经验,我发现多线程编程更适合在后台进行计算而不是在后台下载数据。异步请求更适合在后台下载数据。
必须使用合适的工具才能找到合适的工作。
希望有所帮助。
答案 1 :(得分:0)
如果你搜索了一下,你会发现一些东西......这是免费的:
// Declare the queue
dispatch_queue_t workingQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(workingQueue,
^{
// My background job
dispatch_async(dispatch_get_main_queue(),
^{
// Update the UI
}
);
});
答案 2 :(得分:0)
恕我直言,最简单的方法是使用这个NSObject的方法:
- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg;
那应该调用一个将在后台运行的方法,解析数据 完成后,您可能需要通知主线程。因此,您可以在主线程中执行完成处理程序:
NSBlockOperation* completionHandler=[NSBlockOperation blockOperationWithBlock: ^
{
// Use the parsed data
}];
NSOperationQueue* queue=[NSOperationQueue mainQueue];
[queue addOperation: completionHandler];
PS :一旦完成解析数据,这应该在后台方法中使用。我假设您需要更新可能与主线程创建竞争条件的内容< /强>