12章アクセッサとメモリ管理

この章では5章で簡単に紹介したアクセッサ、キー値コーディング、プロパティについてより詳しく説明します。このほかObj-Cのインスタンスのメモリ管理についても説明します。

12.1 アクセッサ

アクセッサはインスタンス変数の値の取得や設定を行うメソッドです。値を取得するものをゲッター、値を設定するものをセッターと呼びます。

アクセッサは重要です。というのは、ひとつにはインスタンス変数がデフォルトでは保護されている(protectedである)のに対し、アクセッサとして公開されるメソッドは公開されている(publicである)からです。こうしたメソッドがなければ、保護されたインスタンス変数はほかのオブジェクトからはアクセスできません。

こう聞くと公開の必要がないインスタンス変数にはアクセッサを作らなくてよいということになりそうですが、最近のObj-Cではプロパティを宣言すればインスタンス変数とアクセッサが自動的に生成されるようになりました。このためアクセッサのコードを書く必要がありません。また処理系が自動的にインスタンス変数にまつわる処理を行ってくれます。

アクセッサには命名のための(単純ではあるものの重要な)慣習があり、この慣習には従う必要があります。

  • セッター——セッターの名前はsetで始まり、その後にインスタンス変数の名前の先頭を大文字にしたものを続けます(インスタンス変数の最初にアンダースコア「_」があれば除去します)。セッターは引数——インスタンス変数に新たに代入する値——をひとつだけ取ります。たとえば、myVar(あるいは_myVar)のセッターの名前はsetMyVar:としなければなりません。
  • ゲッター——ゲッターはインスタンス変数と同じ名前にしなければなりません(ただし最初の文字が「_」の場合は含めません)。変数名とメソッド名は使われる文脈が異なるため、開発者やコンパイラが混乱することはありません。たとえばインスタンス変数の名前が ...

Get 入門 iOS SDK ―初めてのiPhone/iPadプログラミング now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.