2011年7月2日土曜日

Cocoa ファイルの非同期コピー(5)

やはりファイルのコピーは鬼門かもしれない。これでファイルマネージャあきらめました、になってしまうポイントかも。

FileCopyManager(ファイルのコピー専門のクラス)を作ろうとしている。
ファイル1つのことなら非同期コピーで問題ない。FSCopyObjectAsyncを使えば簡単。

しかし複数のファイルなら・・・。ひとつひとつのファイルを非同期コピーしようとするとおかしなことになる。
単純化すると

for(NSURL* item in fileArray){
FSCopyObjectAsync(item to distURL)
}
とやるわけだが、これだと複数ファイル分非同期になるわけで、どのファイルのコピーが終わったとかどこまで進んだとか、管理しようがない。やはり複数ファイルの時は同期コピーにして、コピーの動作そのものを別スレッドに分ける必要があるようだ。

Finderでこのあたりの動作を確かめると、こんな風になっている。


単純なダイアログだと思っていたらけっこう複雑なTableViewだったのね。カスタムCellの描画が大変なことになっているような。
1行目はとあるFrameWorkのフォルダをコピー中。2行目はUbuntuのISOファイル。

おそらくFileCopyManagerみたいなクラスがあって、そいつはシングルトンで、コピー動作が来るたびにスレッドを分けながらダイアログを表示している、と。

なんだか難しいなー、と投げ出したくなる気分になったちょうどその時、

前向きないい変化を起こすには集中し、努力を続けることが必要 : ライフハッカー[日本版]

こんな記事が目に止まって「そうか、努力の持続が必要か」と思い直す。(^^;)

もう少しがんばってみよう。

0 件のコメント:

コメントを投稿