stryhのノート ~stryh/changelog

Objective-C – NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];の文法が分かった気がする –

以前のエントリーにタイトルにもある書式がなんのことやらさっぱりだったけど、参考本を進めて行ったら分かった気がしました。
* Javaでいうメソッドを呼び出している。

↑のダブルパンチ的な書式だけど紐解いて解説をしよう。
** クラスメソッド
Javaで言うところのstaticメソッドの呼び出しみたいなもの。

↑の部分がObjective-Cのクラスメソッド。
書式は・・・

メッセージと書いたがメソッドと理解していいだろう。
クラス名メッセージの間は半角スペースが入る。
上記のコードでは
– NSAutoreleasePoolクラスのallocメソッドを呼んでいる。
となる。
ちなみにallocはインスタンス生成時に使用するメソッド。
文字列クラスのインスタンスを生成する場合は・・・

となる。
** 1つのステートメントの中で連続して実行可能
どういうことかというと、最初にのせた・・・

の部分。
段階的に説明をすると。
– NSAutoreleasePoolのallocメソッドを呼び実行、インスタンスを生成。
— 戻り値の型はNSAutoreleasePool
– インスタンス生成後initメソッドを呼び実行。
といった感じ。
Javaでいうと・・・

かな。
ステートメント内で連続して実行できるが、あまりにも連続しすぎると可読性は悪くなってしまうので2、3回とかまでの連続がいいような気がする。
Javaでもそんなに連続してメソッドを呼んでいるコードを見た事ない。
* インスタンスメソッド

これも以前のエントリーで記載したサンプルコード。
インスタンスメソッドは最後のコード部になる。
書式は・・・

これまたメッセージと書いたがメソッドという理解で良いのではないかと。
それと間にはクラスメソッド同様、スペース。
サンプルコードを紐解くと・・・
– インスタンス名poolのdrainメソッドを呼び実行。
でしょうか。
* 結論

このサンプルコードを紐解くと・・・
– NSAutoreleasePoolのインスタンス生成。
— NSAutoreleasePoolクラスでNSObjectをimportしているのインスタンス生成メソッドのallocは呼び出せる。
– インスタンス生成後、initメソッドを呼び実行。初期化を行う。
— initメソッドが呼べるのはNSAutoreleasePoolクラスでNSObjectをimportしているから
といった感じではないかと思います。
間違いあれば指摘を!(ってだれもこのBlogはみてないな・・・orz)
* アクセッサメソッド
Javaでいうゲッター・セッターです。
しかし、文法は独特です。
仮に・・・
– あるクラスにageという変数がある。
– そのクラスのインスタンス名がtaro。
– そしてageには26という数値が格納されている。
この場合のゲッター、セッターは

です。
JavaはgetHoge、setHoge(num)みたいな書式でしたが、Objective-Cの場合は上のようになります。
セッターの後ろになんか着いていますね。
これは引数です。
ゲッター、セッターの良い実装例があるので下記リンクを参照。
ゲッター・セッターの良い例
* まとめ
ながながと書きましたが、今日は良い理解ができた感じ。自己満です!

URL :
TRACKBACK URL :

Leave a reply

*
*
* (公開されません)

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

Return Top