Objective-C オブジェクトのメモリ管理

・メモリの確保・初期化
 +(void) alloc でメモリを確保し、
 -(id) initで初期化を行います。
 
 

// allocで取得したオブジェクトをinitで初期化して、objに代入する。
 id obj = [[クラス名 alloc ] init ]  

・参照カウント
Objective-Cでは以下の関数を用いて参照カウントの仕組みを使うことができます。
ただし、(コピー)コンストラクタやデストラクタが存在しないのでカウントの操作は自分で行うことになります。

  //カウントを1増やす。
 - (id)retain;

 //カウントを1減らす。
 - (oneway void)release;

allocとinitで初期化した時点では参照カウントは1で、
参照カウントが0になると- (void)dealloc が呼び出され、メモリを開放します。
initで始まる名前の関数の戻り値で得たオブジェクトはreleaseする必要があります。

– (void)dealloc
 参照カウントが0になったときに呼び出されます。
 メンバ変数の開放、基底クラスのdeallocの呼び出しなどを行います。
 
– (NSUInteger)retainCount
 参照カウントの値を返します。

※alloc init dealloc retain release などの関数は、
 すべてのクラスの基底クラスであるNSObjectで定義されている普通の関数であり、
 キーワードではありません。

広告

akatukisiden について

フリーランスプログラマ 使用言語はC++,C#とそのつなぎのC++/CLI 専門はクライアントアプリ開発
カテゴリー: iOS, Objective-C パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中