NSOperationQueue 每行 UITableView

NSOperationQueue per row of UITableView

我需要启动几个 NSOperations 来加载 table 和来自 AWS S3 的视频(table 每行两个操作),但是在 table 中的一行之后选中后,我想将与 table 的那一行相关联的那些操作传递给下一个视图控制器以继续下载并下载其他视频。然后我会暂停 table 其他行的其他操作,并在我 return 到 table 视图控制器时恢复它们。

为 UITableView 的每一行设置一个 NSOperationQueue 是否安全?有没有更好的方法来完成我想要的?

我绝对更喜欢有一个单独的(最好是共享的)管理器(我们称之为 VideosManager,例如)导出(可能是间接的)操作访问、单独的队列管理、线程-safety + locking stuff 等,而不是任何依赖于控制器层次结构的解决方案。

您可以坚持使用视图控制器模型的方法,但在大多数情况下这不是一个好主意。

用于设计和实现的快速示例 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

该实现将在所需队列(主要是连接实例及其委托队列规划)中处理和操作下载操作,处理传入数据,将其正确写入文件或输出流,允许您动态控制流量,具体取决于您的需求。这只是一个简单的快速方案,您可以对其进行迭代并使其满足您的要求。