我正在將所有圖像下載操作添加到Nsoperationqueue中。但有時候指標會永遠顯示。在這裏,我粘貼了一些我的代碼。有什麼辦法可以停止指標。這裏我正在檢查「operationcount」。如果它將變爲1意味着它的最後一個操作,所以我正在停止指標,但有時不工作的任何幫助將不勝感激。異步下載中的停止指示器
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
//filename = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:self.iconImage];
myobject.iconImage = [[UIImage alloc] initWithContentsOfFile:self.filename];
myobject.isImageLoaded = YES;
[self willChangeValueForKey:@"isFinished"];
[self willChangeValueForKey:@"isExecuting"];
finished = YES;
executing = NO;
[self didChangeValueForKey:@"isExecuting"];
[self didChangeValueForKey:@"isFinished"];
NSLog(@"finsh");
AboutUSAppDelegate *appdel=(AboutUSAppDelegate*)[UIApplication sharedApplication].delegate;
NSLog(@"%d",[appdel.queue operationCount]);
if ([appdel.queue operationCount]==1) {
//code to stop indicator
//Using main thread
}
在這裏我已經添加了Nslog的操作計數,但有時它打印最後的值2兩次。其他值只有1次。
感謝您的回答。我已經做到了,只是看到我的內部我的情況,如果我已經提到「使用主線程」 – Iducool 2011-05-23 11:02:04
你也應該移動檢查計數<= 1到NSOperation以外的地方。我通常有委託方法或塊來通知操作已完成。無論如何,你執行的這些操作正在多個線程上並行處理,從而導致競爭狀況。 – TheBlack 2011-05-23 11:11:47
count <= 1也不起作用,因爲有時nslog中的最後一個值僅顯示 - 2.您說的正確的是線程正在導致競爭狀態。有什麼方法或委託方法可以在操作完成時通知? – Iducool 2011-05-23 11:18:07