最近项目的资源图片变大了,滑动时总是卡顿,在这里用NSOperationQueue解决了一下
.h 文件@interface CollectionViewCell : UICollectionViewCell// 赋值@property (nonatomic, strong) NearRentListModel *listModel;// 队列@property (nonatomic, strong) NSOperationQueue *queue;.m 文件// 懒加载- (NSOperationQueue *)queue { if (!_queue) { _queue = ({ NSOperationQueue *q = [[NSOperationQueue alloc]init]; //设置最大并行操作数为1相当于将queue设置为串行线程 q.maxConcurrentOperationCount = 1; q; }); } return _queue;}// 调用set方法 - (void)setListModel:(NearRentListModel *)listModel { _listModel = listModel; // 这里展示其他数据(根据项目需要而定) // 开始使用,解决卡顿if (self.queue.operationCount >= 2) { //如果self.queue.operations[0]正在执行的话,不会被强行中止 [self.queue cancelAllOperations]; } NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(loadImg) object:nil]; [self.queue addOperation:operation]; }// 调用 展示网络图片- (void)loadImg{ dispatch_async(dispatch_get_main_queue(), ^{ [_headerImg sd_setImageWithURL:[NSURL URLWithString:_listModel.avatar_path] placeholderImage:MoTo_User_headerimage]; [_img sd_setImageWithURL:[NSURL URLWithString:_listModel.cover_photo] placeholderImage:nil]; });}