我已经创建了NSOperation
类,我叫NSURLConnection
获取一些数据。 我打电话NSURLConnection
使用NSOperation
类中的主线程。 NSURLConnection
的代表设置为NSOperation
类对象。 来自NSURLConnection
的呼叫出现在主线程中。 我需要使用相同的操作线程处理这些数据。我如何实现这一目标?NSOperation + NSURLConnection
@implementation ModelCreationSearchOperation {
int try;
}
- (BOOL)isConcurrent
{
return YES;
}
- (void)start
{
[self willChangeValueForKey:@"isExecuting"];
_isExecuting = YES;
[self didChangeValueForKey:@"isExecuting"];
dispatch_async(dispatch_get_main_queue(), ^{
if (self.isCancelled) {
[self finish];
return;
}
});
[self fetchData];
}
-(void)fetchData {
dispatch_async(dispatch_get_main_queue(), ^{
self.connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
});
}
- (void)finish
{
[self willChangeValueForKey:@"isExecuting"];
[self willChangeValueForKey:@"isFinished"];
_isExecuting = NO;
_isFinished = YES;
[self didChangeValueForKey:@"isExecuting"];
[self didChangeValueForKey:@"isFinished"];
[self cancel];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
//Main thread
//Want to perform parsing of response data on operation thread ....
}
说明顺便说一句,与您的问题无关,'isCancelled'逻辑不太正确。在设置'isExecuting'并调用'fetchData'之前,你应该检查一下。将它分派到主队列是没有意义的(也是适得其反的,因为你的'return'应该阻止获取的发生,但是现在你只是从调度中返回,而'isExecuting'和' fetchData'正在发生,无论op是否被取消,这不是你想要的,我敢肯定)。另外,从iOS 7开始,你也应该实现'isAsynchronous'。 – Rob
哦,是的......很棒的......感谢...... –