在乐器中玩耍时,我发现一些我不了解的东西。我创建了几个UIViewController
,并将其view
添加到另一个UIView
:
CustomVC *vc = [[CustomVC alloc] initWithCustomInitializer:someParameter];
[mainView addSubview:vc.view];
通过在CustomVC的
init
和dealloc
中记录CustomVC的内存地址,我看到vc
几乎立即被释放,尽管视图仍然显示在屏幕上,并且一切正常。UIView
是否不一定需要其控制器?还是发生其他我误解的事情? 最佳答案
UIView
不会/不应该保留其父项(UIViewController
),因此,如果您放弃对UIViewController
的引用而仅保留对UIView
的引用,则没有任何内容可以保持对它的强引用,它将被释放。UIView
中对其控制器的弱引用将自动设置为nil。
但是UIView
是否需要其“丢失的”控制器来完成其工作是另一回事,并且完全取决于UIView
。