对 block 自动循环引用的一点见解

首先当前这个 block 肯定就是全局的了
@property (nonatomic, copy) void (^viewBlock)();
如果当前这个类使用 block 的话
self.viewBlock = ^()
{ };
里面如果不引用当前类的任何方法 那么就不会形成循环引用
如果当前类有这么一个方法
- (void)loadData
{}

block 引用了当前这个方法
self.viewBlock = ^()
{
    [self loadData];
};

那么一定会引起循环引用  
 因为一个类销毁之前 当前这个类的的全局属性肯定在这个类销毁之前肯定会销毁的
 所以说 这些属性不销毁的话  那么当前这个类肯定不会销毁的  
使用 weak 的原因就是为了先让当前类全部的全局属性销毁 
然后当前这个类也就销毁了

你可能感兴趣的:(对 block 自动循环引用的一点见解)