静的、動的

Objective-Cだと、静的な領域確保はできないみたいな。

VC++あたりだと、
クラスを静的宣言時、領域確保され、コンストラクタが呼ばれて初期化もされる。

MyClass a;

利用スコープを抜けると、デストラクタが呼ばれて領域は解放される。
Objective-Cでは、こんな使い方はできない。

ポインタで宣言し、newとdeleteを使って、動的にクラスを利用する方法 

MyClass *a = new MyClass();

delete a;

と同等のやり方だけ、Objective-Cで行える。

リテラルに関しては、静的な意味合いで使えるようだ。

#define DEF_MOJIRETSU @”静的な文字列”

こいつの場所を、文字列ポインタで参照 な感じに利用できた。

NSString *strMoji = DEF_MOJIRETSU;

他のメジャーな言語に比べ、
領域の解放を、一番考えないといけない言語 なのかも。

その点は、めんどい面より、作り手が理解しやすい と思えた。

Cで言うnewとdelete(mallocとfree)にあたる、allocとreleaseを利用し、
確保と解放を行うイメージでよさそう。
実際は、リファレンスカウンタの増減を行うことでのオブジェクト管理。

iOS4では、この方法しか今のところないと。

ガーベジコレクションが利用できる環境だと、また別みたいだけど。

シェアする

  • このエントリーをはてなブックマークに追加

フォロミー

コメントをどうぞ

メールアドレスが公開されることはありません。