美文网首页iOS基础·OC高级篇iOS Developer
iOS-17-系统的动画block中的block为什么不用弱引用

iOS-17-系统的动画block中的block为什么不用弱引用

作者: 小东门儿 | 来源:发表于2017-02-23 13:50 被阅读97次

    UIView的动画block不会造成循环引用的原因就是,这是个类方法,当前控制器不可能强引用一个类,所以循环无法形成。
    不需要,之所以需要弱引用本身,是因为怕对象之间产生循环引用,引起程序的崩溃!
    所谓“引用循环”是指双向的强引用,所以那些“单向的强引用”(block 强引用 self )没有问题,比如这些:

    1.  [UIView animateWithDuration:duration  animations:^{ 
    [self.superview layoutIfNeeded]; 
    }]; 
    
    2.  [[NSOperationQueue mainQueue] addOperationWithBlock:^{
     self.someProperty = xyz; 
    }]; 
    
    3.  [[NSNotificationCenter defaultCenter] addObserverForName:@"someNotification" 
                              object:nil 
                               queue:[NSOperationQueue mainQueue]
                               usingBlock:^(NSNotification * notification) {
                                                  self.someProperty = xyz; 
    }];
    

    相关文章

      网友评论

        本文标题:iOS-17-系统的动画block中的block为什么不用弱引用

        本文链接:https://www.haomeiwen.com/subject/gmcbwttx.html