長かったAndroid系の開発プロジェクトも終わり、再びiOSアプリ開発の現場に戻ることになりそうです。
実はちゃんと書籍で知識を得ないままiOSアプリ開発をやり始めてApp Store配信まで進んでしまっていた事もあって、「一度ちゃんとした本を読んでおきたいなぁ」と考えていたので、 帯で「ARCに完全対応!」と銘打たれた『詳解 Objective-C 2.0 第3版』を読み始めました。前に読んでる途中で挫折した『iPhone 3Dプログラミング』は、どちらかと云うとOpen GLのシェーディングとC++が中心の本だったしね。
この本の凄いところはObjective-C 2.0解説のガチ本であるところでしょう。UIKitの解説はほぼ入れず、Objective-Cの言語仕様やFoundationフレームワークの「思想」レベルまで踏み込んで紹介しています。巻末には「思想」に従った命名の指針まで収録されているところも、お得感があり素晴らしいです。コードのコンパイルもXcodeを用いずにLLVMのclangで行う辺り、徹底しています。
また、第3版で改訂された内容も、ARC(Automatic Reference Counting)やGCD(Grand Central Dispatch)、Blocksと比較的モダンな内容に注力している点が魅力的です。特にiOSアプリでは、ググってみたが上位にヒットしたのはMRC(Manual Reference Counting)時代の記事ばかり……と云う経験も少なくありませんし、貴重で頼りになる資料だと言えるでしょう。
余談だけど、古い内容のプログラミング言語仕様に併せた入門記事がいつまでも検索結果上位に居座り続けるのは、Google先生にとって長いこと課題ですよね。
C#だけは、日本においては、入門記事を書いている人の最新仕様へのキャッチアップが恐ろしく早いため、「ググっても外れを掴まされない」という稀有な状況がずっと保たれてます。C#使いてぇ…。
さて、本書の内容に戻りますが、Smalltalkから受け継いだ「オブジェクト」「メッセージ」から始まり、クラス宣言へ繋がって行く読み易い構成になっています。前提知識としてはCかJavaを触ったことがあると、さくさく読めると思います。
Objective-Cの「詳解」を謳うだけあって、なかなか使いこなせてない機能の気付きも多くあって、良い感じです。クラス名の前方宣言(@class)でヘッダファイルのimportを省略したりとか、意識して使ってみると便利そうです。
あと(一般的なJavaなどで言うところの)ファクトリメソッドでも、返す型を決め打ちせずにNSObjectのclassメソッドを使う工夫も、「なるほどなー」という感じです。実行時の動的バインディング + 静的な型チェック機構を持つObjective-Cならではの、サブクラスへの配慮と言えそう。
// これを返すとVolumeに固定されてしまう [[Volume alloc] initWithMin:a max:b step:s]; // Volumeのサブクラス側でオーバーライドしなくてもうまく動く [[[self class] alloc] initWithMin:a max:b step:s];
最近のツッコミ
参号館 日記(ariyasacca)