• ベストアンサー

obj-c @synthesizeについて

Objective-Cの入門書を読み進めているのですが、クラスを使いやすくするために、アクセサメソッド(ゲッターメソッド、セッターメソッド)を省略してプロパティを設定する、という事が書かれています。 プロパティ化した変数はインプリメントセクションで、必ず @synthesize と共に記述しなければならない、と覚えてしまってよいのでしょうか? @synthesizeがでてきたら、「あ、これはプロパティなんだな。インターフェースセクションで@property されてるな」と理解してしまってOKでしょうか? お詳しい方、よろしければご回答お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.2

> プロパティ化した変数はインプリメントセクションで、必ず @synthesize と共に記述しなければならない、と覚えてしまってよいのでしょうか? アクセッサメソッドを記述すれば、@synthesizeは、記述しなくてもかまいません。@synthesizeを記述すると、アクセッサメソッドを省略できると考えるのが、妥当です。 > @synthesizeがでてきたら、「あ、これはプロパティなんだな。インターフェースセクションで@property されてるな」と理解してしまってOKでしょうか? これは、そのとおりです。

michael_u
質問者

お礼

どうもありがとうございます。

その他の回答 (1)

回答No.1

>プロパティ化した変数はインプリメントセクションで、必ず @synthesize と共に記述しなければならない、と覚えてしまってよいのでしょうか? それはちょっと違うと思います。 http://developer.apple.com/jp/documentation/cocoa/conceptual/objectivec/Articles/chapter_5_section_3.html の「プロパティの実装ディレクティブ」の「重要」と書かれたところを参照してください、 と言いたいところですが、日本語訳がちょっとおかしいので、原文を参照した方が良さそうです。 Mac OS X Developer Library http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html#//apple_ref/doc/uid/TP30001163-CH17-SW1 iOS Developer Library http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html#//apple_ref/doc/uid/TP30001163-CH17-SW1 ( Mac OS X Developer Library のものと iOS Developer Library のものは、内容は同じなんじゃないかなと思います。) 日本語訳には「デフォルト値は@dynamicです。」と書かれています(ここだけ見ると @synthesize も @dynamic もなければ @dynamic とみなされるのかと思ってしまいます・・・)が、原文には「デフォルト値は@dynamicです。」にあたる記述は見当たりません。

michael_u
質問者

お礼

ありがとうございます。マニュアルの参照の仕方もままならない段階でして、リンクとても助かります。

関連するQ&A