我正在用JSONTouch執行JSON反序列化,但是它耗時太長,它阻塞了UI,所以我試圖讓一個GCD背景隊列將序列化放到後臺線程中。有時它運行良好,但有時我會在deserializeAsDictionary:weakSelf.mutableData error:&theError];
上獲得EXC_BAD_ACCESS。在connectionDidFinishLoading中使用Grand Central Dispatch解析JSON:?
我不知道爲什麼。我已經使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);
}