当我删除fromsuperview时为什么记忆仍然存在?

时间:2010-07-19 05:38:37

标签: ios memory-management

我目前正在开发一个ipad项目并找到了这个。 所以这是我的结构

我将uiviewcontroller子类化为customVC,就像这样

@protocol customizedVCDelegate

-(void)viewclosed:(UIView *)view oldviewcontroller:(UIViewController *)oldvc newvcname:(UIViewController *)newvc;

@end


@interface customizedVC : UIViewController {
    id <customizedVCDelegate> delegate;
}

@property (assign) id <customizedVCDelegate> delegate;

@end

在demoipadappDelegate中,这是切换视图的主干,我采用了协议并实现了viewclosed功能。 我得到了很多视图,每个视图都会从nib加载。所以我在demoipadappDelegate中加载第一个

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    //loading openvinview
    openingVC *vc = [[openingVC alloc] initWithNibName:@"openingview" bundle:nil];
    vc.delegate = self; 
    [window addSubview:vc.view];
    [window makeKeyAndVisible];

    return YES;
}

要切换视图,我将在每个viewcontroller中触发viewClosed。例如,我得到了VC1并希望转向VC2。我在vc1中触发了一个viewClosed。由于vc1的委托是demoipadappDelegate,因此所有vc的委托都是demoipadappDelegate。所以demoipadappDelegate将收到该事件并执行此操作。这是在demoipadappDelegate

-(void)viewclosed:(UIView *)view oldviewcontroller:(UIViewController *)oldvc newvcname:(UIViewController *)newvc;
{

    self.currentVC = (customizedVC *)newvc;
    self.currentVC.delegate = self;
    [window addSubview:self.currentVC.view];

    [view removeFromSuperview];
    [oldvc release];

}

我预计memery的用量会下降。它没有。 我还检查了每个vc,我已经手动释放任何我分配的东西。事实并非如此。

抱歉,我的英语很差,我希望我的解释清楚

1 个答案:

答案 0 :(得分:1)

你确定你使用的是合适的外壳吗?

该方法称为removeFromSuperview,而不是removefromsuperview