您的位置:首页 > 其它

使用GCD的时候容易犯的小错误总结

2013-10-28 14:58 274 查看
1、前提是没开启ARC,一些aotorelease对象在超出它本身所在块的范围之后被使用,会引起程序crash:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
__block NSURLResponse *response = nil;

__block NSError *error = nil;

__block NSData *receiveData = nil;

NSURLRequest *request = [self gcdHelperRequest:&error];

if (request)

{

receiveData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; //(1)

NSLog(@"receiveData:%@", receiveData); //(2)

}

if (self.gcdHelperServiceBlock)

{

dispatch_async(dispatch_get_main_queue(), ^{

self.gcdHelperServiceBlock(response, error, receiveData); //(3)

});

}

});

这段代码是有问题的,(1)处有问题,(2)处可以正常打印数据,(3)处程序挂了。

改正:receiveData =[ [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error] retain];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: