繁体   English   中英

将子视图添加到视图是否为保留周期?

[英]Is adding a subview to a view a retain cycle?

我需要知道这是否是一个保留周期。 我在泄漏仪器中运行了它,但没有发现任何泄漏。

class myClass: UICollectionViewCell {
   var aView = UIView()

   func test() {
       self.addSubView(aView)
   }
}

此代码不会导致保留循环,但它在实践中也不起作用。

视图需要使用(合适的)框架进行初始化。

如果您想在 Swift 中创建保留循环(我希望只是为了学习),您应该始终表明对实例函数的引用意味着您也在引用该实例。 当分配给一个变量时,你正在创建一个强引用。 确保使用对实例的弱引用将此类引用包装在闭包中,或者确保在完成变量后手动将变量设置为 nil

不,它不会增加保留周期

这个例子将帮助你获得更好的想法

@interface TTParent : NSObject
 @property (atomic) NSMutableArray *children;
@end

@implementation TTParent

@end

@interface TTChild : NSObject

 @property (atomic) TTParent *parent;

@end

@implementation TTChild

@end

在其他一些班级

  TTParent *parent = [[TTParent alloc] init];
  parent.children = [[NSMutableArray alloc] init];
  for (int i = 0; i < 10; i++) {
     TTChild *child = [[TTChild alloc] init];
     child.parent = parent;
     [parent.children addObject:child];

 }

它会增加零售周期,因为父母和孩子彼此都有很强的参考

为了避免这种情况

@property (atomic,weak) TTParent *parent;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM