在乐器中玩耍时,我发现一些我不了解的东西。我创建了几个UIViewController,并将其view添加到另一个UIView:

CustomVC *vc = [[CustomVC alloc] initWithCustomInitializer:someParameter];
[mainView addSubview:vc.view];

通过在CustomVC的initdealloc中记录CustomVC的内存地址,我看到vc几乎立即被释放,尽管视图仍然显示在屏幕上,并且一切正常。
UIView是否不一定需要其控制器?还是发生其他我误解的事情?

最佳答案

UIView不会/不应该保留其父项(UIViewController),因此,如果您放弃对UIViewController的引用而仅保留对UIView的引用,则没有任何内容可以保持对它的强引用,它将被释放。
UIView中对其控制器的弱引用将自动设置为nil。

但是UIView是否需要其“丢失的”控制器来完成其工作是另一回事,并且完全取决于UIView

10-07 14:09