weakself的一种写法-创新互联
前言
在不久前看AFNetworking的源码时候发现了这么一句:
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、做网站、外贸营销网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的华阴网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!// 不知道这行代码的使用场景的同学你该去自习看看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 是一本好书
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享标题:weakself的一种写法-创新互联
URL分享:http://hbruida.cn/article/csjdsd.html