- ベストアンサー
obj-c @synthesizeについて
Objective-Cの入門書を読み進めているのですが、クラスを使いやすくするために、アクセサメソッド(ゲッターメソッド、セッターメソッド)を省略してプロパティを設定する、という事が書かれています。 プロパティ化した変数はインプリメントセクションで、必ず @synthesize と共に記述しなければならない、と覚えてしまってよいのでしょうか? @synthesizeがでてきたら、「あ、これはプロパティなんだな。インターフェースセクションで@property されてるな」と理解してしまってOKでしょうか? お詳しい方、よろしければご回答お願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> プロパティ化した変数はインプリメントセクションで、必ず @synthesize と共に記述しなければならない、と覚えてしまってよいのでしょうか? アクセッサメソッドを記述すれば、@synthesizeは、記述しなくてもかまいません。@synthesizeを記述すると、アクセッサメソッドを省略できると考えるのが、妥当です。 > @synthesizeがでてきたら、「あ、これはプロパティなんだな。インターフェースセクションで@property されてるな」と理解してしまってOKでしょうか? これは、そのとおりです。
その他の回答 (1)
- tsukasa-12r
- ベストアンサー率65% (358/549)
>プロパティ化した変数はインプリメントセクションで、必ず @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です。」にあたる記述は見当たりません。
お礼
ありがとうございます。マニュアルの参照の仕方もままならない段階でして、リンクとても助かります。
お礼
どうもありがとうございます。