「入門 Objective-C 2.0 (Programmer’s SELECTION)」を入手した。その斜め読みメモ。
目次
- ようこそ!
- Cに対する拡張
- オブジェクト指向プログラミング入門
- 継承
- 合成
- ソースファイルの整理
- Xcode活用術
- 駆け足でまわるFoudationキットツアー
- メモリ管理
- オブジェクトの初期化
- プロパティ
- カテゴリ
- プロトコル
- AppKit入門
- ファイルのロードと保存
- キー値コーディング
- NSPredicate
以下、メモ
・C言語の経験を前提としているのでC言語自体の解説はない。
・main()関数を使ったコマンドラインアプリを XCodeで開発しながらの説明(GUI抜き)
例えば:
#import <Foudation/Foundation.h> int main (int argc, const char * argv[]) { int i; for (i = 1; i < 20; i++) { NSLog(@"%d\n", i); } }
・GUI (AppKit)に関する説明は14章のみで最小限。このあたりは期待しない方がいい。
・ソースコードが多く簡易
Hello World から始まって、#import, NSLog(), @"文字列"の意味, @interface, @implements など一つ一つ丁寧に説明されている。
・最初のうちはインスタンス作成に new メソッドを使っているのが気になった(後の章でようやく alloc & initの説明が出てくる)。
・メモリ管理の章でなぜセッタを次のように書くのかを解説(他にも方法があることにも触れられている)。
-(void)setEngine:(Engine*)newEngine { [newEngine retain]; [engine release]; engine = newEngine; }
・オブジェクト指向プログラミングの平易な説明
・Xcode の説明
キーボードショートカットの紹介は役立った(長年知りたかった補完時のプレースホルダ移動が ctrl+/ であることがわかった)。デバッガの
・プロパティの章で、文字列は retainではなく copyがいいとの説明。以前紹介した Googleのコーディング規約等と同じ理由(文字列が変更される可能性があるので)。
・キー値コーディングの章で @演算子を知った。
NSNumber* count; count = [company valueForKeyPath: @"persons.@count"];persons が NSArray の場合、@count で件数を取得できる。他に @sum.* や @avg.* などがあるらしい。今度試してみよう。
・面白かったのが所々にあるコラム欄。ちょい書きなのだが結構役立つ情報が書かれている。「脆弱な基底クラス問題*1」などはためになった。他「プールをクリーンに保つには」、NSやCFの意味、など。
*1 ここで紹介されていたのは、インスタンス変数のオフセット位置がハードコードされていると後から基底クラスの変更が難しいという問題。Leopard以降導入された 64bitランタイムではインスタンス変数の位置を間接化してこの問題を解決した(らしい)。
総じて読み易く手っ取り早く Objective-C を一通り知りたい人にはいい本だと思った。メモリ管理など基本的だが重要な部分も押さえられている。Xcodeの解説もあるので MacOSXでのプログラミングが初めての場合でもとっかかりとしていい。ただ C言語の経験を前提にしているので、他の言語の経験の無いプログラム初心者には勧めない。
★対抗馬
詳解 Objective-C 2.0(荻原 剛志)
荻原さんの本の方が系統的で網羅的、細かい(深い)。対抗馬と書いたが両書は補完し合う存在。初心者は「入門Objective-C 2.0」から入って、次のステップもしくは要所要所詳しく知りたい時に「詳解 Objective-C 2.0」を見るといいと思う。「詳解 Objective-C 2.0」はObjCのバイブル的存在?
★アプリ開発
は、こちらがおすすめ。私はこの第2版で cocoaプログラミングを始めました。
Mac OS X Cocoa プログラミング 第3版