【问题标题】:NSOperationQueue per row of UITableViewNSOperationQueue 每行 UITableView
【发布时间】:2016-08-15 19:10:06
【问题描述】:
我需要启动几个 NSOperations 以从 AWS S3 加载包含视频的表(表的每行两个操作),但是在选择表中的一行后,我想传递与该行关联的那些操作表到下一个视图控制器以继续下载和下载其他视频。然后我会暂停表中其他行的其他操作,并在我返回表视图控制器时恢复它们。
为 UITableView 的每一行设置一个 NSOperationQueue 是否安全?有没有更好的方法来完成我想要的?
【问题讨论】:
标签:
ios
uitableview
swift2
nsoperation
nsoperationqueue
【解决方案1】:
我肯定更喜欢有一个单独的(最好是共享的)管理器(我们称之为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
该实现将处理和操作所需队列中的下载操作(主要是连接实例及其委托队列规划),处理传入数据,将其正确写入文件或输出流,允许您根据需要动态控制流.这只是一个简单的快速方案,您可以对其进行迭代并使其符合您的要求。