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のことについても解決したので、今度記事を書いておこうと思います。

 参考

広告

関連記事

no image

iPhoneアプリ開発 -スライドアウトするスプラッシュ画像-

* やりたいこと アプリを起動すると表示される画像(スプラッシュ画像)があります。 単に表示されるだ

記事を読む

no image

第二回Androidテスト祭り参加記録 -祭りに参加してきたよ-

久しぶりに勉強会に参加してきました。 参加してきたのは「第二回Androidテスト祭り(4/28)

記事を読む

no image

PhoneGapを触ってみた ―導入編―

スマートフォン対応をjQuery Mobileを使ってやったので、その資産をいかせないかということで

記事を読む

datebox-date

jQueryMobileでカレンダー表示 -DateBoxプラグインの利用-

スマートフォン対応をしているとカレンダーの表示の仕方をスマートフォンらしくしたいことがあると思います

記事を読む

no image

「Google Apps」無償版の新規登録が終了

以前、「Google Apps」を利用した以下の記事を書きましたが、とうとう無償版の新規登録が終了

記事を読む

no image

str_padとsprintfの速度

PHPで同じことが出来る「str_pad」と「sprintf」。 今まではsprintfを使う機会

記事を読む

no image

Capistranoで簡単デプロイ -開発用サーバー編-

cakePHPを使って開発しているサービス()で、リリース周りを楽にしたいなと思いCapistran

記事を読む

no image

iPhoneアプリ開発 -WebViewで表示しているページで特定のリンククリック時の動作を変える-

* やりたいこと UIWebViewでWebページを表示し、特定のリンクをクリックした際には別処理を

記事を読む

no image

Selenium2.0でUIテスト(2) -Rubyでやってみよう-

前回は、Selenium + PHPを試しました。 今後はRubyでやってみようということでSele

記事を読む

no image

PhoneGapを触ってみた(3) -画像を扱う(Camera APIを使ってみる)-

今回は、PhoneGapのCamera APIを使って携帯のアルバムにある画像を扱ってみます。

記事を読む

広告

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 ↑