Я создал 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' и 'isExecuting' и' fetchData' происходят независимо от того, был ли op отменен или нет, что не то, что вы намеревались, я уверен). Кроме того, начиная с iOS 7, вы также должны реализовать 'isAsynchronous'. – Rob
О да ... большой улов ..thanks ... –