我有UIViewController
谁拥有多个子视图,但跟踪分配的每个子视图是一项艰巨的任务,因为实际的编码器不是我,需要处理内存消耗。
我的问题是有没有办法控制内存调用递归函数来删除和释放UIViewController
中的所有子视图而不知道实际的引用名称?
如以下代码所示:
for (UIView* subview in view){
[subview removeFromSuperView];
[subview release] ;
subview = nil;
}
答案 0 :(得分:2)
当您在视图上调用removeFromSuperview
时,它会自动减少保留计数(因为超级视图不再需要引用您刚删除的视图)。
如果您以标准方式将您的观点添加到超级视图中,则不需要执行您正在执行的操作 - 您已添加视图然后发布它们,或者您的视图是属性和发布后发生。
您提出的代码(所有子视图的递归循环)是一个坏主意,因为您实际上并不知道您的子视图是否可以安全释放。您可以轻松触发错误访问。