我有一個NSOperation
子類,我想同時運行。爲什麼我的NSOperation子類永不完?
我的理解是,併發操作的工作:
- 我需要定義
isConcurrent
返回YES
。 - 我需要定義
start
方法 - 我需要發送KVOs通知
isExecuting
和isFinished
當它這樣做。 - 使用
@synthesize
將在isExecuting
和isFinished
的值發生更改時自動發送相應的KVO通知。
儘管如此,我已驗證我的隊列永遠不會移動到下一個項目。
這裏是我的代碼的肉:
@interface MyOperation()
@property (readwrite) BOOL isExecuting;
@property (readwrite) BOOL isFinished;
@end
@implementation MyOperation
- (void)start
{
@autoreleasepool {
self.isExecuting = YES;
self.HTTPOperation = [[AFHTTPRequestOperation alloc] initWithRequest: URLRequest];
_HTTPOperation.completionBlock = [^{
[self completed];
self.isExecuting = NO;
self.isFinished = YES;
} copy];
[_HTTPOperation start];
}
}
- (BOOL)isConcurrent
{
return YES;
}
- (void)completed
{
}
@end
我缺少什麼?
(這是在iPhone上,但我無法想象的問題。)
感謝這個答案,它加入到我所知道有關的NSOperation。我的實際問題是@synthesize沒有發射正確的KVO事件。手動控制事件修復了這個問題。 –