什么情况下,才算block与self是互相持有(循环引用)的呢

  1.  self.someBlock = ^(){ ..self.xxx( 或 _xxx)…}
  2. aClass 中存在属性(或变量) aBlock,且aClass中aMethod中:self.aBlock() = xxx , 同时,在bClass中将aClass 作为bClass的属性(或变量),且在bClass中存在:[aObject  aMethod(){. self.xxx( 或 _xxx)..}];

举几个不算循环引用的例子:


[UIView animateWithDuration:0.5f animations:^{
        
        [self doSomething];
    };

[keys enumerateObjectsUsingBlock:^( NSString *key , NSUInteger idx, BOOL * stop) {
       
        [self doSomething];
    }];

 

何时在block中需要避免循环引用?

发表评论

电子邮件地址不会被公开。 必填项已用*标注

浙公网安备 33010602005964号