![](/img/trans.png)
[英]Would it cause retain cycle that add a subview on a view passed by parameter of a function?
[英]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.