1.__block对象在block中是可以被修改、重新赋值的。2.__block对象在block中不会被block强引用一次,从而不会出现循环引用问题。API Reference对__weak变量修饰符有如下几处解释:__weak specifies a reference that does no...
分类:
其他好文 时间:
2016-01-24 14:19:22
阅读次数:
109
block内部引用外界对象的原则:block会对他内部所有的强指针进行强引用。验证原理:在主控制器中modal出ModalVC控制器,ModalVC中有强引用的block属性,在block内部使用self,此时ModalVC便不会被释放,不会执行dealloc方法。验证代码:循环引用的情况:#imp...
分类:
其他好文 时间:
2016-01-20 17:26:23
阅读次数:
238
循环强引用还会发生在当你将一个闭包赋值给类实例的某个实例,并且这个闭包体中又实用了这个类实例。这个闭包体重可能访问了实例的某个属性,例如self.**,或者闭包中调用了实例的某个方法,例如self.**,这两种情况都导致闭包“捕获”self,从而产生了循环强引用。 循环强引用的产生,是因为闭包...
分类:
编程语言 时间:
2016-01-15 20:27:05
阅读次数:
232
如果一个对象只有弱引用指向它,垃圾回收器会立即回收该对象,这是一种急切回收方式。相对的,如果有软引用指向这些对象,则只有在JVM需要内存时才回收这些对象。弱引用和软引用的特殊行为使得它们在某些情况下非常有用。例如:软引用可以很好的用来实现缓存,当JVM需要内存时,垃圾回收器就会回收这些只有被软引用指...
分类:
其他好文 时间:
2016-01-09 00:56:56
阅读次数:
235
1.什么情况使用 weak 关键字,相比 assign 有什么不同? (1)什么情况使用 weak 关键字? 在ARC中,在有可能出现循环引用的时候,往往要通过让其中一端使用weak来解决,比如:delegate代理属性。 自身已经对它进行一次强引用,没有必要再强引用一次,此时也会...
分类:
移动开发 时间:
2016-01-03 17:07:17
阅读次数:
199
定义block的时候,会对外部变量做一次copy,会对self进行强引用1.__weak是ios 5.0 推出的__weak 相当于weak 本身是弱引用,但是如果对象被释放,执行的地址会指向nil 更安全__weak typeof(self) weakSelf = self;2__unsafe_u...
分类:
其他好文 时间:
2015-12-28 01:00:36
阅读次数:
215
经验 delloc 无呼叫 基本上可以得出结论,即循环引用的原因。遇到这样的情况基本上可分为 1: 属性声明weak的地方 写成了 strong 。比方delegate。2: block语法块中 存在的强引用。所以遇到delloc 基本上排查下这两种情况 就能解决80%的问题了。可是现实中往往会有遇...
分类:
其他好文 时间:
2015-12-14 14:03:29
阅读次数:
150
众所周知,java中是JVM负责内存的分配和回收,这是它的优点(使用方便,程序不用再像使用c那样操心内存),但同时也是它的缺点(不够灵活)。为了解决内存操作不灵活这个问题,可以采用软引用等方法。 在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对....
分类:
编程语言 时间:
2015-11-20 19:13:42
阅读次数:
184
本文介绍对象的强、软、弱和虚引用的概念、应用及其在UML中的表示。1.对象的强、软、弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4...
分类:
编程语言 时间:
2015-11-19 18:15:50
阅读次数:
297
这个是针对arc来说的__weak是弱引用__strong是强引用官方的说明如下__strong is the default. An object remains “alive” as long as there is a strong pointer to it.强引用是默认的,对象像强指针一样...
分类:
移动开发 时间:
2015-11-18 16:13:13
阅读次数:
179