Я выполняю десериализацию JSON с помощью JSONTouch, но это слишком долго, и это блокирует пользовательский интерфейс, поэтому я попытался создать фоновый режим GCD, чтобы поместить сериализацию в фоновый поток. Иногда он работает нормально, но иногда я получаю EXC_BAD_ACCESS на deserializeAsDictionary:weakSelf.mutableData error:&theError];
.Разбор JSON с использованием Grand Central Dispatch в соединенииDidFinishLoading :?
Я не понимаю, почему. Я сделал mutableData атомным свойством. Я делаю сразу 3 запроса, поэтому я думаю, что это связано с потоками, пытающимися получить доступ к mutableData? или, возможно, mutableData не находится в хорошем состоянии, когда выполняется блок?
Большое спасибо!
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
__weak myViewController *weakSelf = self;
dispatch_queue_t updateQueue = dispatch_queue_create("parse json", NULL);
dispatch_async(updateQueue, ^{
NSError *theError = nil;
// This is the call that gives me EXC_BAD_ACCESS
NSDictionary *dict = [[CJSONDeserializer deserializer]
deserializeAsDictionary:weakSelf.mutableData error:&theError];
dispatch_async(dispatch_get_main_queue(), ^{
[weakSelf setMutableData: nil];
});
});
dispatch_release(updateQueue);
}