Я выполняю десериализацию JSON с помощью JSONTouch, но это занимает слишком много времени и блокирует пользовательский интерфейс, поэтому я попытался создать фоновую очередь GCD, чтобы поместить сериализацию в фоновый поток. Иногда он работает нормально, но иногда я получаю EXC_BAD_ACCESS на deserializeAsDictionary:weakSelf.mutableData error:&theError];
.
Я в недоумении, почему. Я сделал 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);
}