Objective-Cのアクセサメソッド

 

アクセサメソッドとは、オブジェクトのプロパティ値を取得/設定するメソッドです。

・・・と言われてもよくわからなかったので、調べました。

 

確認環境:Xcode 7.2

 

こんな感じで「someProperty」というプロパティを持つ、「TESTClass001」クラスを例とします

 

TESTClass001.h

「someProperty」プロパティのアクセサメソッドは、「setSomeProperty」と「someProperty」となります。

「setSomeProperty」がセッターメソッドでプロパティに値を設定するメソッドです。

「someProperty」がゲッターメソッドでプロパティの値を取得するメソッドです。

 

TESTClass001.m

セッターメソッドは、「set」の後に、プロパティ名の先頭を大文字にして連結した名前です。なので、この例の場合は、「setSomeProperty」となります。

ゲッターメソッドは、プロパティと同じ名前です。なので、この例の場合は、「someProperty」となります。

そういう命名規則になっているんです。

 

また、アクセサメソッド(セッター/ゲッターメソッド)の代わりにドッド構文を使ってもプロパティにアクセスできます。

これは、アクセサメソッドの呼び出しを簡潔に記述する、便宜のために提供されている機能だそうです。

でもドット構文を使ってコードを書く方が一般的?なのかな

 

TESTClass001.m

ヘッダーファイル(.hファイル)にわざわざ「setSomeProperty」「someProperty」というメソッドを書かなくてもいいんです。

ドット構文を使ってコードを書いていると、アクセサメソッドをあまり意識しませんが、こういう仕組みになってます。

 

なんで、こんなややこしいことをしているかといえば、

オブジェクト指向プログラミングは、内部に保持されている値に直接アクセスせず、

オブジェクトのプロパティには、公開されている何らかの手段(メソッド)を介してアクセスする

という、カプセル化の原則に従っているからです。