2016-08-15 5 views
0

AWS S3からのビデオを含むテーブルを読み込むには複数のNSOperationsを起動する必要がありますが(テーブルの1行につき2つの操作)、テーブルの行が選択された後、テーブルのその行を次のビューコントローラに渡してダウンロードを続行し、他のビデオをダウンロードします。私はテーブルの他の行から他の操作を中断し、テーブルビューコントローラに戻るときに再開します。NSOperationQueue of UITableView

UITableViewの各行にNSOperationQueueを設定しても安全ですか?私が欲しいものを達成する良い方法はありますか?

答えて

1

私は間違いなく操作にエクスポートされた(多分間接的な)アクセス、独立したキュー管理、スレッドセーフ+ロックスタッフ(例えばVideosManagerと呼ぶ)コントローラの階層に応じて任意の解決策の代わりになど。

あなたのアプローチはView Controllerモデルで固執できますが、ほとんどの場合、それは良い考えではありません。

設計し、実装するためのクイックサンプルAPI:

(あなたは、さらに情報を用いて実装Videoインタフェースを持っていると仮定)

@interface VideoManager 

+ (instancetype)sharedManager; // returning a shared singleton 

- (void)startDownloadOfVideo:(Video *)video; 
- (void)cancelDownloadOfVideo:(Video *)video; 
- (void)cancelDownloadsExceptForVideo:(Video *)video; 
- (BOOL)isDownloadInProgressForVideo:(Video *)video; 

@end 

実装が必要なキューでダウンロード操作を処理して動作する(主に接続インスタンス着信データを処理し、ファイルまたは出力ストリームに適切に書き込むことで、必要に応じてダイナミックにフローを制御することができます。これは、あなたが反復してそれをあなたの要求に合うようにすることができる素早い素朴なスキームです。

関連する問題