Swift中闭包使用参考OC中block使用,基本一致 解决Swift中闭包循环引用有三种方法: 1.跟oc一样,使用weak(oc是__weakSelf) 2.简化第一种方法tools?.loadData({[weak self] (jsonData) in}) 这里self需要解包(推荐使用) ...
分类:
编程语言 时间:
2016-09-01 16:21:48
阅读次数:
117
1、block是控制器对象的一个属性,则在block内部使用self将会引起循环应用 2、把block内部抽出一个作为self的方法,当使用weakSelf调用这个方法,并且这个方法里有self的属性,block不会造成内存泄露 3、当block不是self的属性时,block内部使用self也不会 ...
分类:
移动开发 时间:
2016-08-26 19:58:30
阅读次数:
177
在block中使用self会引起循环引用导致无法释放。 解决: __weak typeof(self) weakSelf = self; 例如: NSLog(@"init--> value:%@,address=%p,self=%p",self.person,self.person,self); m ...
分类:
其他好文 时间:
2016-08-23 20:26:18
阅读次数:
122
转自 http://www.cnblogs.com/zhang-chi/p/5532272.html ARC下,关于block里面使用self、weakSelf、strongSelf,理解一直没有特别的透彻,今天花时间研究了一下,总结如下: 其实一共就涉及到两个问题: 1.是否循环引用了 2.blo ...
分类:
其他好文 时间:
2016-07-19 20:41:31
阅读次数:
283
1.循环引用一般是指:A持有B,B同时持有A,从而导致死循环无法释放对象。 2.一般循环引用出现在block和delegate中,而一般解决方法就是将self变成weakSelf(强引用变成弱引用),但是在不是所有的情况下都需要将self变成weakSelf。 以block为例:当self引用了bl ...
分类:
移动开发 时间:
2016-07-19 15:24:39
阅读次数:
186
前言 循环引用就是当self 拥有一个block的时候,在block 又调用self的方法。形成你中有我,我中有你,谁都无法将谁释放的困局。又或者解决方法简而言之就一句话的事情:__weak typeof (self) weakSelf = self; 前言 循环引用就是当self 拥有一个bloc ...
分类:
移动开发 时间:
2016-06-19 12:50:47
阅读次数:
254
//开启子线程下载图片 //1.获取一个全局串行队列 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); __weak typeof(self) weakSelf = self ...
分类:
编程语言 时间:
2016-04-26 09:37:52
阅读次数:
149
到底什么时候才需要在ObjC的Block中使用weakSelf/strongSelf Objective C 的 Block 是一个很实用的语法,特别是与GCD结合使用,可以很方便地实现并发、异步任务。但是,如果使用不当,Block 也会引起一些循环引用问题(retain cycle)—— Bloc ...
分类:
其他好文 时间:
2016-04-26 02:02:02
阅读次数:
169
原本我以为是我程序框架有问题...后来才知道, 无知真可怕... 大家都知道, 在block里面使用self会形成循环引用, 所以我这里就使用__unsafe_unretained __block typeof(self) weakSelf = self; 来避免, 但是在每次发出请求后(请求结果还 ...
分类:
Web程序 时间:
2016-04-22 13:26:12
阅读次数:
141
_weak typeof(self) weakSelf = self; (一)内存管理原则 1、默认strong,可选weak。strong下不管成员变量还是property,每次使用指针指向一个对象,等于自动调用retain(), 并对旧对象调用release(),所以设为nil等于release ...
分类:
其他好文 时间:
2016-04-15 00:43:25
阅读次数:
389