到底什么时候才需要在ObjC的Block中使用weakSelf/strongSelf Objective C 的 Block 是一个很实用的语法,特别是与GCD结合使用,可以很方便地实现并发、异步任务。但是,如果使用不当,Block 也会引起一些循环引用问题(retain cycle)—— Bloc ...
分类:
其他好文 时间:
2016-04-26 02:02:02
阅读次数:
169
Block是一个很好用的东西,这篇文章主要来介绍:1.什么是Block?2.Block的使用?3.Block的循环引用问题及解决. 上面三点应该说是一个很大的问题,目前因为在做项目,我先仅就第三点做叙述,前两点等空闲的时候我再做补充. 1. 2. 3.Block的循环引用问题及解决. 首先我们需要明 ...
分类:
其他好文 时间:
2016-04-25 15:03:24
阅读次数:
155
一、什么是回调函数?回调函数,本质上也是个函数(搁置函数和方法的争议,就当这二者是一回事)。由“声明”、“实现”、“调用”三部分组成。在上面的例子中,我可以看出,函数amount(其实是Block),的声明和调用在A类中,而实现部分在B类中。也就是说,B类实现了amount函数,但并没有权限调用,最终还是 由A类触发调用。我们称这样的机制为“回调”。...
分类:
其他好文 时间:
2016-04-19 20:02:05
阅读次数:
223
API Reference对__block变量修饰符有如下几处解释: 大概意思归结出来就是两点: 1.__block对象在block中是可以被修改、重新赋值的。 2.__block对象在block中不会被block强引用一次,从而不会出现循环引用问题。 API Reference对__weak变量修 ...
分类:
其他好文 时间:
2016-04-03 23:39:10
阅读次数:
255
自己写实体可以完美解决这个问题。 用匿名类型也可以。 设置上下文方法如下: (jz为数据库上下文对象) jz.Configuration.ProxyCreationEnabled = false;jz.Configuration.LazyLoadingEnabled = false; 不用这个的原因 ...
分类:
Web程序 时间:
2016-03-31 14:12:41
阅读次数:
440
有时候我们会碰到这种情况, __weak typeof(self) weakSelf = self; [obj block:^(){ __strong typeof(weakSelf)strongSelf = weakSelf; }]; 我们都知道第一句是为了解决block的循环引用问题,那么在bl ...
分类:
其他好文 时间:
2016-03-29 14:37:56
阅读次数:
124
内存问题始终是软件开发中的头等大事,iOS开发中也不例外,在面试中也是必问的问题。今天我们主要来讲讲Block中涉及的循环引用问题。当我们自己一开始写代码的时候,可能会大量在block中使用self,但是当看到别人优秀的代码的时候,发现别人常常不是用self,而使用weakSelf. 为什么呢?本文的示例代码上传至 https://github.com/chenyufeng1991/Block_W...
分类:
移动开发 时间:
2016-03-18 01:55:45
阅读次数:
215
API Reference对__block变量修饰符的解释,大概意思: 1.__block对象在block中是可以被修改、重新赋值的。 2.__block对象在block中不会被block强引用一次,从而不会出现循环引用问题。 API Reference对__weak变量修饰符的解释,大概意思: 使
分类:
其他好文 时间:
2016-03-17 19:13:37
阅读次数:
123
AC在应用中大量使用了block,由于Objective-C语言的内存管理是基于引用计数的,为了避免循环引用问题,在block中如果要引用self,需要使用@weakify(self)和@strongify(self)来避免强引用。 一、block的循环引用问题 ? [objc] view plai
分类:
其他好文 时间:
2016-03-07 13:28:20
阅读次数:
194
1.__block对象在block中是可以被修改、重新赋值的。2.__block对象在block中不会被block强引用一次,从而不会出现循环引用问题。API Reference对__weak变量修饰符有如下几处解释:__weak specifies a reference that does no...
分类:
其他好文 时间:
2016-01-24 14:19:22
阅读次数:
109