我目前正在从事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
。