遅延読み込みは UITabBarController タスクではありません。代わりに、タブに関連付けられた viewControllers の責任です。
各 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 への参照) を削除すると、すべてのオブジェクトがドミノ スタイルで解放されます。これが目標です。
よろしくお願いします