iOS:简单的保留周期

时间:2013-10-29 21:10:12

标签: ios objective-c cocoa-touch memory-management retain-cycle

假设您有一个viewController:

@property (strong) object* A 
@property (strong) object* B

然后你故意在某个点创建一个保留周期,没有定时器,例如

self.A.someStrongProperty = self  //retain cycle

问题:假设包含这些属性的VC被取消分配,保留周期或内存泄漏是否会持续存在?

2 个答案:

答案 0 :(得分:1)

在您上面发布的代码中,没有保留周期。

保留周期为self.A = self;或更可能为self.A.someStrongProperty = self

编辑:如果您已在上面进行过编辑,假设self是视图控制器,则由于保留周期而无法解除分配。您应该将someStrongProperty更改为weak属性,这将阻止保留周期。

答案 1 :(得分:0)

如果您保留self,则会导致保留周期。

这将导致self实例无法解除分配,从而导致内存泄漏。

为了防止出现这种情况,您可以使用weak属性,也可以在某个时刻手动将someStrongProperty设置为nil,以便中断保留周期。