2011-09-26 32 views
0

我有一個使用Xcode的Single View Application模板創建的項目。顯然,它帶有一個視圖控制器和一個應用程序委託文件。一切正常。我只是想第一次使用Xcode的Analyze工具,以確保在提交到應用商店之前一切正常。我得到的潛在泄漏錯誤的代碼在應用程序代理下面幾行:需要在AppDelegate中發佈什麼?

self.viewController = [[myViewController alloc] initWithNibName:@"myViewController"  bundle:nil]; 
self.window.rootViewController = self.viewController; 

完整的應用程序代理如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 
    self.viewController = [[myViewController alloc] initWithNibName:@"myViewController" bundle:nil]; 
    self.window.rootViewController = self.viewController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

我並沒有修改應用程序委託自己。我正在使用模板給我的任何東西。我是否需要在應用程序委託的某個地方發佈某些內容?如果是這樣,什麼?以及應用程序委託的哪種方法?

回答

1

由於應用程序正在終止,操作系統將恢復所有資源,因此無需在應用程序委託中發佈任何內容。事實上,dealloc甚至會被調用是不可能的。

查看SO link瞭解更多信息。

如果你需要做清理時,應用程序退出,使用applicationWillTerminate:

+0

非常感謝CocoaFu!我想我應該忽略分析工具的投訴,至少在這種情況下。 – Dogahe

0

該行 self.viewController = [[myViewController alloc] ... 分配一個實例,然後將其分配給屬性self.viewController。在alloc上,引用計數將爲1,但分配給設置爲retain的屬性將再次增加引用計數。

由於參考計數由1中的dealloc只遞減,這個對象將永遠不會被釋放=泄漏。

有關更多詳細信息,請參閱iOS開發人員文檔中有關Objective-C內存管理的部分。

+0

我知道內存管理的基礎知識。只是不知道在這種情況下是否需要做點什麼。我會相信另一個回答說,我不需要在這裏做任何事情。非常感謝。 – Dogahe