第3章【モデルのパターン】を読む(中編)ー あるいは、インストールできないXcode4に焦れる夜 ー

投稿者: | 2011/03/10

「iOS開発におけるパターンによるオートマティズム」

そろそろ1章を1エントリーで書くのが厳しくなってきました。
私の学習が追いついていません。

iOS開発におけるパターンによるオートマティズム

木下 誠 (単行本 – 2011/2/9)
¥ 2,940


と言うわけで、今回読む章も…

第3章【モデルのパターン】続き

3.3 モデルオブジェクトクラスのパターン

まずは Core Data を使わないケース。

3.3.1. 情報保持のためのインスタンス変数

モデルオブジェクトクラスの実装について、
実際のコードを追いながら解説されている。

ポイントは、以下。
1.モデルのインスタンス *01データの実体。 に必ず識別子 *02「その」インスタンスを特定するためのキー情報。 を持たせること。
2.識別子の作成にはCFUUID *03Core Foundation Unique Universal Identifer を使うのが便利なこと。 *04つか、わざわざ自前で識別子作るとかしんどくて嫌。

3.3.2. アクセッサ

モデルが保持するデータへのアクセッサの用意について解説されている。
ポイントは以下。
1.アクセッサはObject-Cのプロパティを利用して実装する。
2.各アクセッサは扱うデータの性質に合わせて
  retain, assign, readonly を使い分ける。 *05readonlyはまあ、まんまだから解る。retain(保持)とassign(割当)の内容がいまいち不明。ちゃんと調べよう。

3.実装部でsynthesizeを行う。 *06「synthesize」が何かは、ちゃんと理解できていなかったので、後で調べる。コードを見る限りでは、クラスのデータメンバーとプロパティの関連付けを行っているようだったが…。

3.3.3. 保存と読み込み

モデルオブジェクトの保存について。
ポイントはNSCodeingプロトコル。
NSCodingに定義されている2つのメソッド、
initWithCoder:と encodeWithCoder:によってファイルへの保存が可能となる。

保存にはencodeWithCode:を使用。
読み込みにはinitWithCoder:を使用。

読み込んだ(デコードした)オブジェクトは、必ずretainしておくこと。

3.3.4. オブジェクトの破棄

deallocメソッドを実装し、
その中で、そのモデルの各データメンバと自身をreleaceしておく。

3.4 モデルマネージャクラスのパターン

これも Core Data を使わないケース。

3.4.1. モデルマネージャへの参照

要点は以下。
1.モデルマネージャのインスタンスは1つだけ。 *07つまり、シングルトン・パターン
2.外部からの呼び出しのため、自身への参照を持つ。

3.4.2. モデルインスタンスの管理

サンプルでは、配列にモデルインスタンスを格納して管理。
内部変数はNSMutableArrayだが、プロパティはNSArrayを使用。
つまり、配列の変更操作はプロパティ経由では行わず、
配列操作用のメソッドを別途用意する。

3.4.3. モデルへのアクセス

基本的に 追加、挿入、削除、移動、で構成される。
追加と挿入の違いは、末尾に入れるのが「追加」、
インデックスを指定して任意の場所に入れるのが「挿入」。
これらは、テーブルビューでの表示・操作との接続を念頭に置いたもの。

3.4.4. 保存と読み込み

一般的な保存⁄読込の機能実装に同じ。
saveとloadのメソッドを用意し、
実際の保存と読み込みはNSCodingというObject-Cのプロトコルに任せてしまう。

注意すべきは、保存⁄読込対象のファイル実在チェックを欠かさないこと。

今回のタイトルが「中編」であることからお分かりの様に、
まだ「後編」が残っています。
こんな調子で、あと6章。
本当に終わるんでしょうか…。

【おまけ】Xcode4 のインストールに3回失敗したよ

今日、3/10 に MacAppStoreにてXcode4がリリースされました。
従来、無料で提供されてきたXcodeでしたが、今回は600円。

Appleには何かポリシーがあって、開発環境を無料提供しているんだろうと思い込んでいたので、正直、ちょっとショックでした。 *08価格的にはお賽銭程度の値段ですので、即購入しましたが。

ダウンロードファイルサイズは4.5GB。
出勤時にダウンロードを開始、帰宅してからインストールに取り掛かりました。

今回あたりからは、実際にコードを書きながら学ぶつもりでした。
せっかくなら、最新版にアップデートして頑張ろうと考えたのです。

ところが…
インストールを開始すると、終了まであと少しと言うところで停止してしまいます。
そのまま、何のエラーも出ず30分…。

それを3回繰り返した結果、
「ダウンロードしたファイルが破損しているのかもしれない。」との結論に達し、
4.5GBを再ダウンロード中です。 *09寝る前に終わるんだろか…


脚注

脚注
01 データの実体。
02 「その」インスタンスを特定するためのキー情報。
03 Core Foundation Unique Universal Identifer
04 つか、わざわざ自前で識別子作るとかしんどくて嫌。
05 readonlyはまあ、まんまだから解る。retain(保持)とassign(割当)の内容がいまいち不明。ちゃんと調べよう。
06 「synthesize」が何かは、ちゃんと理解できていなかったので、後で調べる。コードを見る限りでは、クラスのデータメンバーとプロパティの関連付けを行っているようだったが…。
07 つまり、シングルトン・パターン
08 価格的にはお賽銭程度の値段ですので、即購入しましたが。
09 寝る前に終わるんだろか…

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください