美文网首页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为什么不用弱引用

    UIView的动画block不会造成循环引用的原因就是,这是个类方法,当前控制器不可能强引用一个类,所以循环无法形...

  • 浅谈OC中block

    Block的循环引用:block强引用self,self强引用block。解决方案:对self进行弱引用。 内部修...

  • 平常开发中会遇到的内存泄漏

    一、Block循环引用 防止block循环引用的方法:(弱引用) __weaktypeof(self) weaks...

  • swift或oc项目中的内存泄漏

    场景1:代理delegate放在block中引用,虽然delegate是弱引用但是在block中还是会将deleg...

  • YYCategories---@weakify 和 @stron

    weakSelf在Block中被引用,因其是弱引用的关系存在被释放的风险。在block中调用self会引起循环引用...

  • YYCategories中@weakify 和 @strongi

    weakSelf在Block中被引用,因其是弱引用的关系存在被释放的风险。 在block中调用self会引起循环引...

  • iOS开发循环引用理解

    在block中,并不是所有的block都会循造成环引用,比如UIView动画block、Masonry添加约束bl...

  • iOS:加强

    基础问题1、使用系统的某些block api(如UIView的block版本写动画时),是否也考虑引用循环问题?2...

  • iOS 避免循环引用

    一、block引发的循环引用1、在block中使用对自身对象的弱引用来替换self 2、如果在block使用了成员...

  • iOS开发中常用的宏

    1,获取屏幕的大小,宽度和高度 用法: 2,弱引用/强引用 弱引用和强引用主要用在Block中,防止循环引用,导致...

网友评论

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

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