使用系统的某些block api(如UIView的block版本写动画时),是否也考虑循环引用问题?
2021-05-14 17:29
标签:举例 eof dism 方式 ring block 循环 pat keyword 但如果方法中的一些参数是 成员变量,那么可以造成循环引用,如 GCD 、NSNotificationCenter调用就要小心一点,比如 GCD 内部如果引用了 self,而且 GCD 的参数是 成员变量,则要考虑到循环引用,举例如下: GCD NSNotificationCenter 使用系统的某些block api(如UIView的block版本写动画时),是否也考虑循环引用问题? 标签:举例 eof dism 方式 ring block 循环 pat keyword 原文地址:http://www.cnblogs.com/huangzs/p/7516715.html
不需要
考虑,但也有一些api 需要考虑
不会
引起循环引用的问题[UIView animateWithDuration:duration animations:^
{ [self.superview layoutIfNeeded]; }];
[[NSOperationQueue mainQueue] addOperationWithBlock:^
{ self.someProperty = xyz; }];
[[NSNotificationCenter defaultCenter] addObserverForName:@"someNotification"
object:nil
queue:[NSOperationQueue mainQueue]
usingBlock:^(NSNotification * notification)
{ self.someProperty = xyz; }];
__weak __typeof__(self) weakSelf = self;
dispatch_group_async(_operationsGroup, _operationsQueue, ^
{
[weakSelf doSomething];
[weakSelf doSomethingElse];
} );
__weak __typeof__(self) weakSelf = self;
_observer = [[NSNotificationCenter defaultCenter]
addObserverForName:@"testKey"
object:nil
queue:nil
usingBlock:^(NSNotification *note){
[weakSelf dismissModalViewControllerAnimated:YES];
}];
下一篇:C#基础[8] 属性
文章标题:使用系统的某些block api(如UIView的block版本写动画时),是否也考虑循环引用问题?
文章链接:http://soscw.com/essay/85706.html