NSOperationQueue线程队列完毕finished状态检测
生活随笔
收集整理的這篇文章主要介紹了
NSOperationQueue线程队列完毕finished状态检测
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
參考:
http://stackoverflow.com/questions/1049001/get-notification-when-nsoperationqueue-finishes-all-tasks
-?(NSOperationQueue?*)parseQueue?? {?? ????if?(nil?==?_parseQueue)?? ????{?? ????????_parseQueue?=?[[NSOperationQueue?alloc]?init];?? ????????[_parseQueue?setSuspended:YES];?? ????????//[_parseQueue?setMaxConcurrentOperationCount:1];?? ????????[_parseQueue?addObserver:self?? ??????????????????????forKeyPath:@"operations"?? ?????????????????????????options:0?? ?????????????????????????context:nil];?? ????}?? ?????? ????return?_parseQueue;?? }??
2.加入operationNSInvocationOperation?*operation?=?[[NSInvocationOperation?alloc]?initWithTarget:self?? ???????????????????????????????????????????????????????????????????????selector:@selector(myTask)??? ?????????????????????????????????????????????????????????????????????????object:nil];?? [self.parseQueue?addOperation:operation];?? [operation?release];<strong>?? rong>??
3.觀察值的改變://KVO,觀察parseQueue是否執行完?? -?(void)observeValueForKeyPath:(NSString?*)keyPath?? ??????????????????????ofObject:(id)object??? ????????????????????????change:(NSDictionary?*)change??? ???????????????????????context:(void?*)context?? {?? ????if?(object?==?self.parseQueue?&&?[keyPath?isEqualToString:@"operations"])?? ????{?? ????????if?(0?==?self.parseQueue.operations.count)?? ????????{?? ????????????DLog(@"parse?finished");?? ????????????//other?operation?? ????????????[_parseQueue?setSuspended:YES];?? ?????????????? ????????}?? ????}?? ????else?? ????{?? ????????[super?observeValueForKeyPath:keyPath?ofObject:object?change:change?context:context];?? ????}?? }??
選擇對NSOperationQueue的operations進行觀察,而不選operationCount是因為operationCount需要iOS 4.0以上
? ? ?多線程編程中,操作隊列NSOperationQueue我們經常會用到的,簡化了多線程的操作。至于用法就不多介紹了。這里要說的是隊列執行完畢的狀態檢查。
? ? ? 我們很多時候需要在隊列完成之后再進行操作,而何時隊列完成,NSOperationQueue并沒有內置的didFinishedSelector來供使用,因此需要自己去檢查其狀態。
? ? ? 因為NSOperationQueue兼容?key-value coding (KVC) and key-value observing (KVO)機制,因此我們可以觀察NSOperationQueue的屬性。NSOperationQueue可供監控觀察的屬性有:
-
operations?- read-only property
-
operationCount?- read-only property
-
maxConcurrentOperationCount?- readable and writable property
-
suspended?- readable and writable property
-
name?- readable and writable property
1.初始_parseQueue
[cpp] view plaincopy
2.加入operation
[cpp] view plaincopy
3.觀察值的改變:
[html] view plaincopy
選擇對NSOperationQueue的operations進行觀察,而不選operationCount是因為operationCount需要iOS 4.0以上
總結
以上是生活随笔為你收集整理的NSOperationQueue线程队列完毕finished状态检测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 炉盘自动熄火什么原因(《炉石传说》官方网
- 下一篇: svn错误提示: svn is sche