IOS在ViewController中以编程方式删除子视图的位置

时间:2014-04-20 22:53:05

标签: ios uiview uiviewcontroller subviews

我对IOS很陌生,所以如果我的问题很明显,我很抱歉。 我在故事板中设置了ViewController的视图,其中包含其他子视图。

viewWillAppear 中,我会根据传递给此ViewController的对象更新这些子视图。此对象可以具有nil属性,在这种情况下,我想删除这些子视图。

删除这些子视图的正确位置是什么,效率方面是否存在差异?

  • viewDidLoad中
  • viewWillAppear中
  • viewWillLayoutSubviews

是否也会删除为这些删除对象设置的约束?

THX

2 个答案:

答案 0 :(得分:0)

如果您正在使用Storyboard并且ARC不担心删除您的视图,相反,如果您非常有兴趣将记忆保持在非常严格的控制之下,那么请不要使用Storyboard并删除ARC。

您所引用的子视图不是子视图,您列出的方法不是UIView方法,而是UIViewController方法。但是,如果您正在尝试删除UIView对象,那么也将为您处理这些对象。如果你想要更严格的控制,那么将它们声明为公共ivars,将它们包装在@autoreleasepool {}中,并在viewWillDisappear:或其他方法中设置为nil,或者通过委托或通知模式。它与您正在做的事情和您的条件有关。

答案 1 :(得分:0)

肯定会删除约束。但是,可以将约束保存在数组中,并在将来再次添加它们。

我建议在viewWillLayoutSubviews方法中更改视图(方向,可见性,几何)。您不希望在ViewWillAppear方法中执行任何昂贵的操作,因为此时视图已准备好显示给用户,并且可能会影响视图为用户加载的速度。