Objective-cで悩んでいたこと −アクセサのことについて−

公開日: : 最終更新日:2014/04/20 iPhone, IT, Mac


 疑問

以前書いたiPhoneアプリを開発していて(Objective-Cを触っていて)疑問に思っていたことの1つ
iPhoneアプリを開発してての疑問 -教えてエライ人!- | PPl@ce

アクセサメソッドの実行に関してドット演算子を使うかどうか。
example.width = 10;
のようにするか、はたまた
[example setWidth:10]
にするか。

正直、(いくらEclipseとかに機能があっても)セッター・ゲッターを書きまくるのはつらいので、このプロパティは非常に助かっています。
ただ、ドット演算子なの? メソッド呼び出しなの?という疑問がありました。

 結論

私と同様に疑問に思っていた人はいたようで、そしてそれに答えてくれている人もいたのでした。
ちゃんとぐぐれよ!という話でした。

で、結論から言うと以下のように簡単にまとめられていた!

簡単にまとめると、明示的にクラス名を指定して変数を宣言してるときはドット記法で、id型で受けるべき時はメソッドでっていうのが一応の使い分けかなー。
Objective-Cのアクセサの話 : As Sloth As Possible

 蛇足的に書いてみる

ドット演算子では厳密な型チェックをおこなっているから以下の様な書き方はできない。

id obj = [array objectAtIndex:0];
obj.title = @"Dynamic Objective-C";

つまり、値として何が入っているか期待できていても確実でない場合は、ドット演算子を使うわけにはいかない。
そもそも、id型のオブジェクトにはドット演算子を適用することはできない。
キャストすれば、ドット演算子も使えるけど何が入っているか確実じゃないならキャストしてもねという感じですしね。

その場合は以下のように書く。

id obj = [array objectAtIndex:0]; // Bookのオブジェクトが入ってると期待できるとする
if ([obj respondsToSelector:@selector(setTitle:)]) {
  [obj performSelector:@selector(setTitle:) withObject:@"サンプル"];
}

1つ謎が解決しました。
ちなみに、Subversionのことについても解決したので、今度記事を書いておこうと思います。

 参考

広告

関連記事

スクリーンショット 2013-04-27 11.46.12

githubを使っての開発(2) -masterブランチにマージ-

前エントリーでgithub-flowをもとにした流れを書いたのですが、その中のマージについてもう少し

記事を読む

スクリーンショット 2012-10-20 14.26.24

iPhoneアプリ開発 −UITabControllerの利用−

* やりたいこと 上にあるように下部にあるタブをタッチしたら別のページを呼び出す。 * 

記事を読む

Jenkins + iPhoneアプリ(1) -執事を雇う-

アプリ開発をしていると、自動化出来るところは自動化したくなってきますよね。 開発しているアプリも増え

記事を読む

iPad(Retinaディスプレイモデル)にiOS7を入れてみた

iPadにiOS7を入れてみたので、その報告。 iPhone5にはまだ入れておかないでおこうと思っ

記事を読む

1

Androidアプリ開発 -9patchで吹き出し画像を作る-

* やりたいこと TextViewで文字を表示させ、背景画像に吹き出し画像を設定した場合。 文字

記事を読む

list-normal

jQuery Mobileのリストの見た目をちょっとカスタマイズ -覚書-

jQuery Mobileを使えば簡単にスマートフォン対応できる言えば出来るのですが、少しでもカスタ

記事を読む

no image

iPhoneアプリ開発 - touchesBeganとUITapGestureRecognizerの差(タッチとタップ) –

「画面にある画像を移動させたい」とか、「画面に線を書きたい」ということがあるかと思います。 ぐぐると

記事を読む

Jenkins + DeployGate(2) -DeployGateにアプリをアップ!-

DeployGateを使ってますか? 継続的にDeployってますか? TestFlightの

記事を読む

no image

iPhoneアプリ開発 芳名帳アプリ作成(3) -名前を書けるようにする-

* 今までの流れ - -[http://pplace.jp/2013/06/1531/:title=

記事を読む

no image

Twitterでプロテクトをかけているユーザが投稿したステータスを取得する方法

* 前提 ID Twitterの各投稿にはIDが存在していています。 そのIDを元にステータス

記事を読む

広告

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

広告

no image
[感想] Effective Objective-C 2.0 ☆☆☆☆★(4.5)

* 構成 - 第1章 Objective-Cに慣れる -

no image
[感想] iOSアプリテスト自動化入門 ☆☆☆(3.0)

* 構成 - Chapter 1 テスト自動化への取り組み

DeployGateを試してみた(iOS編) -DeployGateがiOSに対応-

今までのDeployGate - -[http://pplace.

iPhone/iPadアプリを開発するためにやったこと

今までに、iPhoneを3本ほどリリース((リリースしたアプリは全て1

no image
ターミナルでgitのコマンドを補完したりブランチ名を表示する – macでgitを便利に使うために –

* やりたいこと macのターミナルでgitをいじっていると -今の

→もっと見る

PAGE TOP ↑