2011-06-30 45 views
0

使用以下代碼時,是否需要執行任何操作來釋放選項卡控制器的視圖?雖然在一個應用程序的工作,我已經分析了該項目,並就報告有利用addSubview:iOS內存管理,UIWindow addSubview:和製表符控制器

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    [window addSubview:[tabController view]]; 
    [window makeKeyAndVisible]; 
    return YES; 
} 

MyAppDelegate.h

@interface MyAppDelegate : AppDelegate { 
    UIWindow *window; 
    IBOutlet UITabBarController *tabController; 
} 

@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet UITabBarController *tabController; 

@end 

MyAppDelegate.m行的潛在聯繫

@implementation MyAppDelegate 

@synthesize tabController, window; 

- (void)dealloc { 
    [tabController release]; 
    [window release]; 
    [super dealloc]; 
} 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    [window addSubview:[tabController view]]; 
    [window makeKeyAndVisible]; 
    return YES; 
} 

@end 

我是否需要在釋放之前釋放tabController.view se tabController?或者在application:didFinishLaunchingWithOptions:方法裏面? This question似乎說我只需要在dealloc中釋放控制器。

謝謝!

回答

0

技術上調用它,你應該在某個時候釋放tabController,但在現實中也沒關係。 window存在於程序的整個生命週期中,當程序終止時,所有內存都被清除,因此window保留的對象將不會泄漏。

這會在運行構建/構建和分析時引發警報,但可以安全地忽略它。同樣適用於在此級別添加的navController或主窗口的任何其他保留子視圖。

+0

謝謝。這「修復」了這個問題。有趣的是,現在我開始更好地理解分析消息,並發現它與作爲子視圖(用於背景)被添加到'[tabController tabBar]'的UIImageView有關。但是,這仍然是很好的知道和回答我的問題。 – Rob

0

u必須sythesized所以用自

- (void)dealloc { 

     [self.tabController release]; 

     self.tabController=nil; 

     [self.window release]; 

     self.window = nil; 


    } 
+0

哪裏是我的窗口在appdelegate –

+0

我已經更新了UIWindow如何綁定的問題。謝謝! – Rob

+0

我希望你把窗口的ib連接到窗口ivariable –