Cocoa Mac アプリケーションには、アプリケーションの PubSub クライアントで購読されているすべてのフィードを通過し、すべてのエントリを既読としてマークするメソッドがあります。
ロジックは次のようになります...
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 で何か不足していますか、それともロジックが本質的に遅いだけですか?