我在我的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