Hori,Masaki
masak****@users*****
2002年 11月 19日 (火) 11:58:02 JST
ども、堀です。 すいません。僕自身ちょっと混乱してますた。 整理のためにうだうだと書いときます。 まず、mailboxPathを導入した理由は、メールボックスを一意に決定する方法として です。 root─┬A─C─B │ ├B─A─C │ └C─B─A この図で分ってもらえると思いますが、名前では決定できません。 初期はただこれだけの理由です。 で、次にと言うか平行して考えてたのは、 簡単に保存形式を変更できる仕組みを提供する事でした。 まあ、これは保存専用オブジェクトを持たせれば、いいだけなんですけど。 問題は、保存、読み込みをすべきデータをどうやって取ってくるかです。 そのために保存形式を仮定ました。 僕が仮定した保存形式は次の3つです。 1、すべてを1ファイルに保存する。(本当は除外したかった...) 2、メールボックスごとに1ファイルに保存する。 3、メールごとに1ファイルに保存する。 1、を上手く扱うには、保存用オブジェクトに メールボックスを保持させるわけには行きません。 仕方なく保存用クラスのinterfaceは -(BOOL)saveMail:(id)mail intoMailbox:(id)mailbox; のように、引数にメールボックスを持たせるようにしなければなりませんでした。 さらに、保存用オブジェクトに保存場所を保持させるのも難しく、 メールボックスにその指標を持たせる事にしたのです。 そこで、mailboxPathに目が行ったのです。 ここまでは、まあいいのですが、おつむの弱い僕には二つの事を同時に考えるのは 不可能でした。 もう、mailboxPath=保存場所の指標 の図式がインプットされてしまったのです。 こうなってしまうともうメロメロです。 「保存先の基点はユーザーが指定できるべき。けどインスタンスすべてが持つ必要な し」 +(NSString*)rootMailboxPath; // これはまあ普通 「ん?なんでmailboxPathにrootPathがはいってないんだ?」 // おおボケ 「を! サブクラスがパスを変更できるようにすれば自然と保存場所が変わるじゃな いか!」 // もう何がなんだか。 しかも、そろそろコーディングに入ろうと気がはやって検証すらしてませんでした。 いま、誰が保存先を保持するか再検討中です。 > すみません、少し確認したいのですが、 > 例えば新着メールを取得するときの処理の流れはこんな感じでしょうか? > 1.ユーザーが、新着メールの受信ボタンを押す。 > 2.MainControllerの、getNewMailのようなメソッドが呼び出される > 3.POPでメールのデータを受信する。 > 4.振り分けマネージャみたいなクラスがあって、メールデータの内容をもとに、 > 保存先のMailboxを決定 > 5.MailFileManagerの、saveMail:intoMailbox:が呼び出される。 > 6.上のメソッド中で、引数のMailBoxオブジェクトにパス名を問い合わせ、 > そのパス上のファイルにメールを保存する。 > > とりあえず、このような流れだったと仮定して、(そもそも全然勘違いだったらす みません。) > この場合、MailFileManagerの実装クラスがファイルの保存方法を決めているはず なのに、 > 物理ファイルの保存先のパスがMailBoxに設定されているのが > 何故なのか、ちょっと良く分かりませんでした。 > >#昨日イヤーな物を発見してしまったので、 > >#シリアライズではなくアーカイブに変更します。 > >#まあ、違いがよくわからないので僕的にはどっちでもいいんですけど。 > > イヤーな物というのがすごく気になります・・・ > なにがあったのでしょうか・・・ ADCより抜粋 Note: NSSerializer is obsolete and has been deprecated in Mac OS X 10.2. Use NSPropertyListSerialization instead. だそうです。 バージョンチェックしてごちょごちょやるより アーカイブにしちゃうほうが楽ですので。 では。