关于ARC中block的用法 及weak self等(持续更新)
2016-04-07 18:07
441 查看
今天看了一篇文章。先暂时作为开头。有空更新
在不久前看AFNetworking的源码时候发现了这么一句:
当时也没注意为什么要写成&*这种样子… 今天再想起来, 搜了一圈, 终于让我找到原因了…
其实以上的4种写法都是对的
AFNetworking里面不写成以上这行代码的原因是因为
不过, 如果你写成了__typeof(self)也没什么问题… 那是因为在LLVM3.1之后已经不会出现以上的情况了… ( via )
TODO: ARC的文档值得仔细看看http://clang.llvm.org/docs/AutomaticReferenceCounting.html
之前推荐的 Multithreading and Memory Management for iOS and OS X 是一本好书
前言
在不久前看AFNetworking的源码时候发现了这么一句:1 2 3 4 5 6 7 8 9 10 | // 不知道这行代码的使用场景的同学你该去自习看看ARC的注意事项和Block的使用了 // AFNetworking的写法 __weak __typeof(&*self)weakSelf = self; // 我之前一直这么写的 __weak __typeof(self) weakSelf = self; // 或者这么写 __weak XxxViewController *weakSelf = self; // 或者这么写 __weak id weakSelf = self; |
正文
其实以上的4种写法都是对的AFNetworking里面不写成以上这行代码的原因是因为
typeof(self)会被解析成
XxxViewController *const __strong(假如你的self是XxxViewController的话), 这样的话就就会报错…(没有老版本, 没有验证, 不过看网上的结论应该是这样了)
不过, 如果你写成了__typeof(self)也没什么问题… 那是因为在LLVM3.1之后已经不会出现以上的情况了… ( via )
总结
TODO: ARC的文档值得仔细看看http://clang.llvm.org/docs/AutomaticReferenceCounting.html之前推荐的 Multithreading and Memory Management for iOS and OS X 是一本好书
相关文章推荐
- poj 3669 meteor shower
- UIColor *_color[5] UIColor数组
- XFire入门示例
- Android studio 导入Eclipse project 注意事项
- Spark的日志配置
- 五分钟理解一致性哈希算法(consistent hashing)
- Masonry介绍与使用实践:在初次使用Masonry时
- C++上机实验3-4
- 图片_ _优化Bitmap加载图片1
- web.xml之<context-param>与<init-param>的区别与作用
- 【JQuery UI】对话框插件——dialog
- iOS-setNeedsLayout等布局方法
- lightoj 1013 - Love Calculator 【LCS 变形】
- Spring Websocket一个错误
- iOS _ 图片保存到本地相册
- Selenium官文翻译--(二)Selenium WebDriver(未完待续)
- GraphicsMagick安装&make命令使用
- red hat linux下安装mysql
- Android性能测试--Emmagee
- GraphicsMagick安装&make命令使用