延迟加载不是 UITabBarController 任务。相反,它是与您的选项卡关联的视图控制器的责任。
要释放与每个 UIViewControllers 关联的 UIView,每次更改 TabBarItem 时,都必须在与您的 UITabBarController.viewControllers 属性关联的每个 UIViewController 子类中实现以下方法:
-(void)viewDidDisappear {
[self.view removeFromSuperview];
self.view = nil;
}
显然,这将删除与您的 UIViewController 关联的 self.view。但是,如果您的代码足够聪明,这将删除所有相关对象。例如,假设您的 loadView 方法如下:
-(void)loadView {
UIView *contentVew = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.view = contentView;
…
...
UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,0,320,50)];
…
…
[contentView addSubview:aLabel];
[aLabel release];
…
[contentView release];
}
这意味着 contentView 中的每个对象及其内存责任都需要分配给 contentView,后者被释放并附加到 self.view 属性。
在这种情况下,删除 self.view(即对 contentView 的引用)会导致每个对象的多米诺骨牌式释放,这就是您的目标。
最好的祝福