2012年7月31日火曜日

プライベートメソッドをClass Extensionではもう古い

()は実はもうとっくに終わっていた。

WWDC2012の"Modern Objective-C"というスライド(ダウンロード済み)。
http://adcdownload.apple.com//wwdc_2012/wwdc_2012_session_pdfs/session_405__modern_objectivec.pdf

直接ブラウザのURLにつっこんだらエラーになったので、セッション名でググって出てきたここから行ったらうまく取れた。理由はよく分かっていない。

この中で、例題に挙げられているクラス名が渋い。"SongPlayer" でっせ〜?こういうところは見習わないとねえ。すごいすごい。

で、バージョンはよく知らないのだが(そして礼儀正しいプログラムに対して不躾だが)、今はこのカテゴリもどきのClassExtensionを使わずとも、@implementation〜@endの間、かつ、参照するメソッドの下に入れるのがBest Solutionらしい。

が、Okay WorkaroundでClassExtensionの中にPropertyを入るケースが紹介されている。これはどうなんだろう?Best Solutionには@interface側が書いてないので分からない。多分、今まで通り.hに@interfaceを書いて、プロパティやインスタンス変数(あれば)はそちらにということかな。

本質的には@privateがメソッドに当てられないってことだと思うのだが、逆にこうして(Cで言う)プロトタイプ宣言なしでプライベートメソッドを書けるほうが楽なのだし、例えば@privatemethodというディレクティブがあったとしたらどっちを使うか?と言われればそこはかなり微妙(ケースバイケース、ワンバイワン)だと思う。ただ短絡的には@classがあるんだから、どうして”短絡的に"@privatemethodとか@methodといったディレクティブを取り入れなかったのだろう?と思うと、それは恐らく@classほど使い出がないからじゃないだろうか。

他にもプロトコルを後で()追加しているとあるコードがあるが、これもなあ。要するにあちこちに書かないほうがいいと自分は思う。



0 件のコメント:

コメントを投稿