是否在视图中添加子视图保留周期?

时间:2016-05-13 07:01:20

标签: ios objective-c swift

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

class myClass: UICollectionViewCell {
   var aView = UIView()

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

如果你想在Swift中创建保留周期(我希望只是为了学习),你应该总是提出一个实例函数的引用意味着你也引用了实例。在分配变量时,您将创建一个强引用。确保在具有对实例的弱引用的闭包中包装此类引用,或者确保在完成后将变量手动设置为nil

答案 2 :(得分:0)

不,它不会增加保留周期

此示例将帮助您更好地了解

@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;