1.首先咱们建立了一个网络请求工具类网络
而后storyboard里面去建立了一个导航控制器 而且把它设置为初始控制器 而后拖入一个bar button --show--到自带的控制器异步
这个时候运行代码的结果是工具
x对象
显然这个时候没有形成循环引用 blog
为何呢??????????????????变量
//没有self的时候是没有循环引用的bfc
//tools是一个局部的变量 执行完了就会被释放掉了network
//这个时候出现了self没有出现循环引用 控制器也被释放了循环
//block是右边的finished finished 对这个self.view进行强引用 finished执行完毕了而后就释放掉了 会解除对self的强引用 并不会对self产生循环引用引用
例子2:
若是这个时候咱们对控制器里面的那个networktools 中的tools对象来一个strong的强引用而不是copy的话
这个时候的结果仍是和以前是同样的为何???
控制器对self的解除引用是在finished执行完毕的时候
对这个tools的强引用没有关系
例子3:
block是一组准备好的代码 在须要的时候执行 能够看成参数传递
在异步的方法中可以执行block 的话就直接执行 若是当前方法不能直接执行block 一般须要定义一个属性 记录block 在须要的时候执行
上图了:
这个时候期待的循环引用就出现了