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

github-flowを使っての開発(3) -1つのプロジェクトを複数人で開発-

今まで2回ほどgithub-flowをもとにした開発の流れを書きました。 今回は、複数人で開発をする

記事を読む

setup

Google Appsで独自ドメインメールの利用

独自ドメインでメアドを持ちたかったのでGoogle Appsを利用してみました。 その各種設定の覚

記事を読む

no image

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

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

記事を読む

no image

ヘルプ作成で思ったWebサービスの3つの心得 -短文の教え-

最近ヘルプを作って思った3つのこと。 * 1文に複数の内容を書かない 1文に複数の内容を書いてい

記事を読む

no image

iPhoneアプリ開発 −遷移先のViewControllerに値を引き継ぎたい−

例えば、トップページに複数個のボタンがあって、「A」と「B」というボタンを押下した際に、同じView

記事を読む

no image

iPhoneアプリをヒットさせるために大事な5つのこと

巷にはたくさんのiPhoneアプリがたくさんあります。 そして、毎日新しいアプリがリリースされていま

記事を読む

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

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

記事を読む

Jenkins + DeployGate(1) -DeployGateでAndroidアプリ開発-

TestFlight for Androidが発表されて1ヶ月ぐらいたちますが、音沙汰がありません。

記事を読む

Selenium2.0でUIテスト(1) -まずはPHPでやってみる-

久しぶりにSeleniumを触ってみました。 Selenium2.0から色々と変わったみたいで少々

記事を読む

ndk

Androidアプリ開発 -画像処理をC言語で高速化-

* 画像を扱う際の問題(1):計算処理の遅さ 前回、セピア画像にする方法を書きました。

記事を読む

広告

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 ↑