假设您有一个viewController:
@property (strong) object* A
@property (strong) object* B
然后你故意在某个点创建一个保留周期,没有定时器,例如
self.A.someStrongProperty = self //retain cycle
问题:假设包含这些属性的VC被取消分配,保留周期或内存泄漏是否会持续存在?
答案 0 :(得分:1)
在您上面发布的代码中,没有保留周期。
保留周期为self.A = self;
或更可能为self.A.someStrongProperty = self
。
编辑:如果您已在上面进行过编辑,假设self
是视图控制器,则由于保留周期而无法解除分配。您应该将someStrongProperty
更改为weak
属性,这将阻止保留周期。
答案 1 :(得分:0)
如果您保留self
,则会导致保留周期。
这将导致self
实例无法解除分配,从而导致内存泄漏。
为了防止出现这种情况,您可以使用weak
属性,也可以在某个时刻手动将someStrongProperty
设置为nil
,以便中断保留周期。