私は、SFTP機能を含む小さな無料のCocoaアプリケーション、特にアップロードを処理しています。アプリが完成に近づいていますが、たくさんのファイルを含むフォルダをアップロードすることに関してかなり悪い問題に遭遇しました。非常に大きなSFTPアップロードを処理する - ココア
私がアップロードを処理するためにConnectionKitを使用しています:
CKTransferRecord * record;
record = [connection recursivelyUpload:@"/Users/me/large-folder"
to:@"/remote/directory"];
これは、ほとんどのファイルとフォルダのため正常に動作します。この場合、@ "/ Users/me/large-folder"には300個以上のファイルがあります。このメソッドを呼び出すと、約30秒間CPUが最大100%回転し、アプリケーションが応答しなくなります(Mac回転ボール)。 30秒後に私のアップロードが待ち行列に入り、正常に動作しますが、これはほとんど理想的ではありません。明らかにこれらのファイルを列挙しているものは、完了するまで私のアプリケーションをロックアップさせてしまいます。
これについてどうすればよいか分かりません。私は私の研究を行っていますが、ConnectionKitはそこにあるものの中で最高のようですが、私はちょうどどんな解決策にもオープンしています。
アイデア?
列挙を自分のスレッドに移動すると、プログラムがロックされなくなりましたが、その間に100%CPUで実行しています。ファイルを「怠惰に」読むことが何を意味するのか説明できますか? – nrj
可能な限り遅くファイルを読むことを意味します。この場合、アップロードする準備が整うまでファイルを読み込まないことを意味します。私は列挙中にすべてのファイルを読み込んでいると思われますが、これはおそらくそれを行う良い時期ではありません。必要であれば、NSFileHandleにはバックグラウンドで読み込みを行い、読み終わったときに通知するルーチンがあります。 –