ios block 循环引用
根据Block在内存中的位置分为三种类型NSGlobalBlock,NSStackBlock, NSMallocBlock。
- NSGlobalBlock:类似函数,位于text段;
- NSStackBlock:位于栈内存,函数返回后Block将无效;
- NSMallocBlock:位于堆内存
block 与对象,对象与对象,关于引用次数:
一个思路:就是 在用 block的时候,block 里面使用到的变量,有没有 增加引用计数,如果 增加了,就可能 最后 垃圾收集器 引用计数 减少了,但是 还是 大于1的,因此就 造成了内存泄露,然后 就不调用 dealloc了,因此 在这个方法里面写的 其它资源释放的方法也是没有效的。
对于引用的 对象,变量,设置成:
1,__block(用ARC 设置成__weak)
2,__unsafe_unretained
添加标记是为了告诉系统,这个对象 被block强奸过,这样就解决了,
只是搞不清楚,使用上面的:是block把用到的对象拷贝到堆上,没有增加引用计数,之前是多少还是多少