2011-09-15 27 views
0

以下のコードのような2つのビューコントローラを持つタブバーをプログラムによって作成します。タブバーが不要になったら、メモリをきれいにするのは難しいです。アップルのドキュメントは、タブバーコントローラのリリースに関して非常に制限されています。私は 'viewControllers'配列内のすべてのビューコントローラを解放する方法を知らない。私は保持カウントをプリントアウトしようとしたとのx & YのretainCountは、これは私がメモリを解放しようとする方法である5.すべてのView ControllerでUITabBarControllerを解放するには?

@interface X:UIViewController 
@interface Y:UIViewController 

@interface Z: UIViewController { 
    UITabBarController *tabBar; 
} 
@end 

@implementation Z 
-(IBAction)openTabBarUp{ 
    UITabBarController *tabBar = [[UITabBarController alloc] init]; 

    X *x = [[X alloc] init]; 
    Y *y = [[Y alloc] init]; 

    tabBar.viewControllers = [NSArray arrayWithObjects: x, y, nil]; 
    [self.view addSubView: tabBar.view]; 

} 

と高いが見つかりました:

-(IBAction)removeTabBar{ 
    [tabBar.view removeFromSuperView]; 
    [tabBar release]; 
    tabBar = nil; 
} 

おかげ

レオに

+0

オブジェクトの絶対retainCountは無意味です。あなたはそれについて考えてあなたの時間を無駄にしている、 – bbum

答えて

1
-(IBAction)openTabBarUp{ 
    tabBar = [[UITabBarController alloc] init]; 

    X *x = [[X alloc] init]; 
    Y *y = [[Y alloc] init]; 

    tabBar.viewControllers = [NSArray arrayWithObjects: x, y, nil]; 
    [self.view addSubView: tabBar.view]; 

} 

完了しましたUITabBarController *tabBar = [[UITabBarController alloc] init];はですメソッドを使用しています。すでにヘッダーファイルでそのインスタンスが宣言されています。 [tabBar release];を使用してtabBarを解放することはできますが、アップルはメインのウィンドウのルートビューとしてtabBarControllerを追加し、ビューコントローラの一部としては追加しません。

UPDATE

Apple reference documents on UITabBarController状態

タブバーインターフェイスを展開する場合、あなたはあなたの窓の ルートとして、このビューをインストールする必要があります。ほかのビューコントローラとは異なり、タブバー は、別のビュー コントローラの子としてインストールされるべきではありません。

+0

私は参照してください。私はそれが奇妙な保持カウントを取得する理由だと思う。どうもありがとう。私はUITabBarに代わるものと考える必要があります – leo

+0

あなたは保持カウントを見たので奇妙な保持カウントを取得します!真剣に - オブジェクトの絶対保持数は無意味です。 – bbum

関連する問題