0

假设你有一个 viewController:

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

然后你故意在某个时候创建​​一个保留周期,没有计时器,这样

self.A.someStrongProperty = self  //retain cycle

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

4

2 回答 2

1

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

保留周期将是self.A = self;或更有可能,self.A.someStrongProperty = self.

编辑:在您在上面编辑的情况下,假设self是一个视图控制器,由于保留周期,它不会释放。您应该将您的更改someStrongProperty为一个weak属性,这将阻止保留周期。

于 2013-10-29T21:12:56.763 回答
0

是的,如果您保留self,您将导致保留周期。

这将导致self实例不被释放,从而导致内存泄漏。

为了防止这种情况,您可以使用weak属性或在某个时候手动设置someStrongPropertynil,以打破保留周期。

于 2013-10-29T21:12:06.047 回答