我在我的Cocoa Mac应用程序中有一个方法,它遍历应用程序的PubSub Client中的所有订阅源并将所有条目标记为已读。NSInvocationOperation问题
的逻辑看起来是这样的......
NSArray *feeds = [[PSClient applicationClient]feeds];
for(PSFeed *feed in feeds)
{
for(PSEntry *entry in [feed entries])
{
entry.read = NO;
}
}
如果有大量的未读的饲料可能需要一段时间才能通过他们全部循环(相对而言)。我希望用户能够做其他事情,比如滚动文章,而其他内容正在后台进行。所以我有一个NSInvocationOperation设置要调用的方法,像这样......循环运行时
NSInvocationOperation *opr = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(markAllReadOperation) object:nil];
[que addOperation:opr];
[opr release];
应用程序仍然经历严重放缓。而UI几乎没有反应。我是否错过了NSInvocationOperation,或者我的逻辑本身就很慢?
我没有向后支持的问题,我计划把它带到Mac App Store ...所以用户默认会有10.6。现在NSInvocationOpeartion无法做到这一点会有什么改进?我的印象是,NSOperation只是在较高层次和较少层次上提供相同的功能。更新:我试过这个,但我仍然得到类似的缺乏UI响应,而该操作正在单独的线程上运行。 – avizzini 2011-02-12 06:44:45
这没有任何意义......我还建议在乐器中进行分析以查看导致该块的呼叫。 – 2011-02-12 17:56:03