我目前正在从事ipad项目,发现了这一点。
所以这是我的结构

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

@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函数。
我有很多视图,每个视图都将从笔尖加载。所以我在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];

}


我预计记忆使用会下降。没有。
我还检查了每个vc中是否已经手动释放了我分配的所有内容。所以不是这样。

对不起,我的英语不好,我希望我已经解释清楚了

最佳答案

您确定使用的是正确的机壳吗?

该方法称为removeFromSuperview,而不是removefromsuperview

09-26 21:25