Iphone 在运行时向UIView分配和取消分配内存

Iphone 在运行时向UIView分配和取消分配内存,iphone,memory-management,uiview,Iphone,Memory Management,Uiview,我正在制作一个应用程序,其中 MyViewController1 MyViewController2+9UIView(MyView1、MyView2、MyView3、MyView4、MyView5、MyView6、MyView7、MyView8、MyView9) 并在以后根据我的要求管理每个视图的隐藏和显示 由于最初不需要所有视图,因此单击按钮时需要这些视图… 所以我所做的是-> 步骤1)在myViewController2.xib中添加了每个视图(视图不是在viewController2的视图

我正在制作一个应用程序,其中

MyViewController1

MyViewController2+9UIView(MyView1、MyView2、MyView3、MyView4、MyView5、MyView6、MyView7、MyView8、MyView9)

并在以后根据我的要求管理每个视图的隐藏和显示 由于最初不需要所有视图,因此单击按钮时需要这些视图…

所以我所做的是->

步骤1)在myViewController2.xib中添加了每个视图(视图不是在viewController2的视图中添加的,即它们不是viewController2的子视图)

步骤2)ibuiview*myView(1..9);在MyViewController2.h中

步骤3)MyViewController2.h中的UIView*myView(1..9)属性(非原子,保留)

步骤4)在MyViewController2.m中合成myView(1..9)

viewDidLoad(){ 
    myView1.frame = CGRectMake(x, y, y, y)//any Value
    [self.view addSubView:myView1]; //added as child to this view

    //I did for all the view

} 
步骤5)现在应用alpha=0/1,过渡,根据要求的任何其他属性

一切都很好

但现在我的应用程序占用了太多内存,无论何时加载此页面

所以现在我想

仅在需要时,即单击按钮并 不需要时,释放该视图的内存

如何做到这一点,因为我的所有9个视图都是使用IB创建的,所以如何在运行时从interface builder加载视图

请建议任何其他解决方案,如果有


提前感谢…

因此,无论何时,只要您想要显示视图,就启动并显示该视图。还要为该视图设置标记。如果要显示另一个视图,请从“超级视图”中删除上一个视图,并添加一个新视图作为子视图

[myView1 removeFromSuperview];
myView2.frame = CGRectMake(...);
[self.view addSubview: myView2];

如果视图是在IB中创建的,则无法在运行时添加视图。在调用
viewDidLoad
之前,在IB中创建的所有对象都被alloc/inited。如果希望在运行时创建视图,则必须以编程方式创建,而不是以IB方式创建。(如果您选择这样做,Aadhira的建议将很有效。但是,您必须确保您没有在IB中创建视图。此外,视图不能保留为属性。否则,从superview中删除它们不会释放它们。)

但是,这可能不是必需的。只要您没有在视图中放置任何内容(例如图像),它们可能不会占用太多内存。您可以在IB中创建视图,但根据需要以编程方式向视图中添加内容,并在不再需要时以编程方式发布该内容