NSOperationQueue per row of UITableView



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

对于UITableView的每一行有一个NSOperationQueue是安全的吗?有没有更好的方法来实现我想要的?

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

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

快速示例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

该实现将在所需队列(主要是连接实例及其委托队列规划)中处理和操作下载操作,处理传入数据,将其正确写入文件或输出流,允许您根据需要动态控制流。这只是一个快速幼稚的方案,您可以迭代并使其符合您的需求。

最新更新