此代码是否会导致保留周期?

时间:2015-09-16 19:23:12

标签: objective-c

我有一个问题,这行可以造成任何麻烦吗?

self.window.rootViewController = self.viewController;

假设self的两个属性都有retain setter:

@property(nonatomic, retain) UIViewcontroller viewController;

我的问题是这会导致任何奇怪的对象树或保留周期或内存问题吗? viewController的保留计数为2,因此如果self想要删除内存,那么self.window.rootViewController仍然可以保留对它的引用?还是我完全错了?

enter image description here

2 个答案:

答案 0 :(得分:2)

如果你只看箭头的方向,你可以看到这里没有循环。视图控制器只有两个所有者。

答案 1 :(得分:1)

如果要解除分配self.viewController,则需要清除两个引用:

self.window.rootViewController = nil; // or some other controller
self.viewController = nil; // or some other controller