我用一个uiviewcontroller管理多个视图。切换视图后,把不显示的视图释放掉。
uiview1 *view1 = [[uiview1 alloc] init...];
self.view = view1;
[view1 release];
虽然我在视图上添加了很多subview但是能保证都释放掉了。可是内存就是回不到原来的水平了。
视图1:7M
视图2:13M
视图1:8M
视图2:13M
视图1:8M
视图2:13M
视图1:8M
......
最后虽然稳定在8M,但是我的程序中有很多页面。如此增长肯定吃不消的。

解决方案 »

  1.   

    >>uiview1 *view1 = [[uiview1 alloc] init...];
    >>self.view = view1;
    >>[view1 release]; 
    你的view1还没有被释放。Objective-C采用计数方式管理内存,只有当实例的引用数retain count为0时,调用Release才会被真正释放,否则只是将retain count减少1而已。这里有一些关于iPhone程序开发不错的文章,推荐给LZ http://mobfan.cn
      

  2.   

    当前的视图为view1,当我self.view = view2时,view1会被释放掉。
    点操作符会把旧的release,把新的retain。
      

  3.   

    uiview1 *view1 = [[uiview1 alloc] init...]; 
    self.view = view1; 
    [view1 release]; 只有[view release]的时候才真正释放了。
      

  4.   

    你在切换到另一个视图的时候,把当前self.view的视图release掉,每次都NEW视图对象。这样就可以不用保存
      

  5.   

    一般是addSubView这样的处理。而后处理显示结束把subview弹出。而后再addSubView。
    加入想做成幻灯片的功能,那么最好有两个view同时存在,而后之间切换赋值。
    加入有需要我这里有实例代码。
    另外推荐一下苹果开发中文网 www.CocoaDev.cn
      

  6.   

    objc永远不要指望内存看起来申请和释放一致,它本身就有自己控制的东西,内存多少它说的算。