Copyright (C) iPhoneアプリ開発備忘録 All rights reserved.
ブログ内で記したコード、内容の正確性は保証いたしません。
記載内容を実装したことにより発生した不具合・損害等の責任は一切負いません。



2010年08月29日

メモリ解放



メモリ解放の基本。

viewDidUnloadとdeallocでメモリ解放の記述を行うが、使い分けは次のようにする。

foo.h
@interface ViewController : UITableViewController
{

IBOutlet UIButton *hogeButton;
NSArray *hogeArray;

}

@property (nonatomic, retain, readonly)IBOutlet UIButton *hogeButton;
@property (nonatomic, retain) NSArray *hogeArray;
@end




foo.m
- (void)dealloc
{

[hogeButton release], hogeButton = nil; // IBOutletで接続したオブジェクト
[hogeArray release];


[super dealloc];

}


- (void)viewDidUnload
{

[super viewDidUnload];

[hogeButton release], hogeButton = nil; // IBOutletで接続したオブジェクト


self.hogeArray = nil;


}



ポイントは、ヘッダファイルのプロパティ定義で"readonly"と定義したオブジェクトは、viewDidUnloadで
self.objectName = nil;
としてはならない。オブジェクトのreleaseとオブジェクトへのnilの直接代入は以下のように個別に行う。
[objectName release];
objectName = nil;


逆に”readonly"ではないオブジェクトは、viewDidUnloadで
self.objectName = nil;
としてよい。

また、Nibから生成されるオブジェクト(IBOutletで接続したオブジェクト)は、deallocにおいてrelease後に、オブジェクトにnilを代入する。
[objectName release];
objectName = nil;




Tips:
・self.objectNameは、プロパティアクセス。
・objectName、または、self->objectNameは、インスタンス変数への直接アクセス。



■詳細はサンプルコード UICatalogとiPhone OS View Controllerプログラミング ガイトMemory Management of Nib Objectsを参照。


■参考記事
http://cocoadays.blogspot.com/2010/07/uiviewcontroller.html
http://yuuen.syoyu.net/Entry/59/
http://yuuen.syoyu.net/Entry/66/


posted by mobileDeveloper at 13:50 | Comment(0) | TrackBack(0) | メモリ管理 はてなブックマーク - メモリ解放 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
Apple、Appleのロゴ、App Store、iPodのロゴ、iTunesは、米国および他国のApple Inc.の登録商標です。
iPhone、iPod touch、iPadはApple Inc.の商標です。
iPhone商標は、アイホン株式会社のライセンスに基づき使用されています。
その他、本ブログに記載されている製品名、会社名は、それぞれ各社の商標または登録商標です。