Programing Note

千里の道も一歩から

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

Tweet

Advertisement



Event

・サイトを引っ越ししました。2016/10/15

新しいサイトはこちらです。

・サイトをリニューアルしました。2015/12/29

Related Articles:

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

Update on March 16, 2016

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

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


確認環境:Xcode 7.2


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


TESTClass001.h


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

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

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


TESTClass001.m


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

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

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


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

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

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


TESTClass001.m


特に指定しなければ、こんな感じで、アクセサメソッド(セッター/ゲッターメソッド)をコンパイラが自動で生成してくれます。

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

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


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

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

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

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

inserted by FC2 system