去年はiOS開発なんて本に頼らなくともドキュメントを読めば良いんだ!と調子乗ったことをずっと思ってましたが、なんだか最近エンジニアとして閉塞感があり、やっぱり先人たちの色んな実装方法や考え方を学ぶのも大事だ!と思い、iOSに関する本を1冊冬休みに読んでみました。『iOS開発におけるパターンによるオートマティズム』という本です。今年は少しずつこういう本を読みiOSの習熟度を上げつつ、他の領域にも挑戦していきたいですね。
目次とちょっと気になったメモを残しておきます。
目次
目次です。
- 1章 パターンとは何か
- 2章 アプリ設計のパターン
- 3章 モデルのパターン
- 4章 メモリ管理のパターン
- 5章 ビューコントローラのパターン
- 6章 テーブルのパターン
- 7章 通知のパターン
- 8章 ネットワークのパターン
- 9章 iPadへの対応
1章 パターンとは何か
この本はひたすらパターンという言葉がでてきて、それを中心に解説が進みます。パターンとは再利用可能な小さなソースコードと著者は定義し、それをコピペをしながらアプリを半自動的に作ってしまおうという考えのようです。確かに、よくあるパターンはこの去年1年iOSを開発していて多かったので、その引き出しを増やすという意味でも読んでみました。
2章 アプリ設計のパターン
アプリ設計のパターンは、ソースコードではないですが、以下の3つのフェーズに分け開発をスタートするというパターンが良いと著者は主張しています。
- 機能設計
- ユーザーインターフェース設計
- クラス設計
この最後のクラス設計に関して、
-
- モデルは、他の例やから独立
-
- ビューはモデルに依存しており、コントローラから独立
-
- コントローラは、モデルとビューに依存
ここでいう依存とは、あるクラスのヘッダファイルをインポートしていれば、それはそのクラスに依存している
6章 テーブルのパターン
Cocoa touch の中核を成す、重要なパターンがデータソースとデリゲート。
デリゲートとの考え方を用いれば、無闇にビューであるUITableViewクラスのサブクラスを作る必要がなくなり、アプリケーション独自のロジックをコントローラに集中させることができる。
原則として、UITableViewはサブクラス化せず、UITableViewCellをサブクラス化する。あまりビューのサブクラス化は、Cocoa touchではしないが、このUITableViewCellは、数少ないサブクラス化をすることを前提としている珍しいクラス。
また、メモリの使用量を抑えるため、セルを再利用しているが、それで起こるのは、セルとモデルが1対1にならない。なので、あるセルから直接モデルの情報を取得してはならず、モデルマネージャークラスから取得する必要ある。
7章 通知のパターン
この本でいう通知には3種類
- デリゲートによる通知(1対1)
- キー値関しによる通知(1対多)
- NSNotificationによる通知(多対多)