« retainCountの不思議 | メイン | loadViewとviewDidLoadとself.view »

2010年10月25日

iOS SDKのviewDidUnloadでoutletを解放するべきか否か

iPhoneアプリを開発していると、メモリ関係でうむむと悩むことが多い。
Objective-Cを使い始めたころは、EXEC_BAD_ACCESSに泣かされまくった。

で、今、僕の中でホットなのが、

iOS SDKのviewDidUnloadでoutletを解放するべきか否か

という問題。

Cocoaの日々: UIViewController でのメモリ管理見本

こちらのエントリ(非常に詳細で素晴らしい!!)をみると、viewDidUnloadでプロパティにnilを入れて解放処理を行っている。
実際、テンプレートから作成されるViewControllerのソースには、

- (void)viewDidUnload {
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

とあるから、アウトレットを解放する必要があるような気もする。
しかし、

iOS アプリケーション チュートリアル (PDFです)

このチュートリアルでは、特に行っていない。

Cocoaメモリ管理プログラミングガイド (PDFです)

このガイドを見ても、viewDidUnloadでの解放については触れていない。
じゃあ、やっぱり解放する必要はないのかなーと思っていると、

Memory Management Programming Guide: Memory Management of Nib Objects

この英語版のガイドでは、「しろ!」って書いてある。
いったいどっちなんだ?!
してもしなくてもいいのか、それとも、しなくてはいけないのか。
謎は深まるばかりでございます......。

投稿者 CHEEBOW : 2010年10月25日 11:24 このエントリーを含むはてなブックマーク

[ iPhone ]
【お知らせ】音楽に関することはこちらのブログで書いています。くじら音楽部::BLOG