使用GCD的时候容易犯的小错误总结
来源:互联网 发布:小区网络建设需求分析 编辑:程序博客网 时间:2024/04/29 15:40
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];
- 使用GCD的时候容易犯的小错误总结
- 使用GCD的时候容易犯的小错误总结
- 容易犯的javascript小错误
- 程序员最容易犯的错误总结
- 容易犯的错误。
- 容易犯的错误
- 使用 libevent 容易犯的一个错误
- emacs-muse 管理工程时候容易犯的错误
- 新手容易犯的错误
- asp容易犯的错误
- 引用容易犯的错误。
- 引用容易犯的错误。
- Android 容易犯的错误
- c++容易犯的错误
- 编程容易犯的错误
- caffe 容易犯的错误
- 函数重载中容易犯的小错误
- C语言容易犯的一些小错误
- 【MySQL】MySQL常用操作集合
- gcc以及Qt的DLL文件调用之总结
- Ubuntu使用笔记_U盘启动&装系统
- android之wifi开发
- 新人报道
- 使用GCD的时候容易犯的小错误总结
- 【Think In Java】 正则表达式
- eclipse各版本代号
- iis判断request method是按Content-Type而不是request line判断的
- camera模组介绍
- Java 环境变量配置
- 简述Ubuntu Server修改IP/DNS
- form 表单域的动态设计-customized tab information 模块代码开发总结(1)
- mysql查询语句