博客
关于我
NSOperation基本操作
阅读量:799 次
发布时间:2023-02-17

本文共 1550 字,大约阅读时间需要 5 分钟。

NSOperation 基本操作指南

一、并发数

并发数指同时执行的任务数量。例如,开启3个线程执行3个任务,当前并发数为3。

最大并发数是同一时间最多可执行的任务数。它由系统资源决定,通常受内存和CPU限制。如果没有设置最大并发数,系统会根据资源情况自动调整。

二、队列取消与暂停恢复

队列可以通过cancelAllOperations方法取消所有操作,也可以使用单个操作的取消方法。

队列可以通过setSuspended方法暂停或恢复执行,isSuspended方法查询当前状态。在TableView界面下载任务时,可以在用户滚动时暂停队列,在滚动停止时恢复队列。

三、操作优先级

可以通过设置NSOperation的队列优先级来调整执行顺序。优先级取值范围为:NSOperationQueuePriorityVeryLow~-8L至NSOperationQueuePriorityVeryHigh~8。

高优先级操作更容易被执行。注意合理设置优先级,避免过多启动子线程,以免影响UI响应。

四、操作依赖

可以通过设置依赖关系确保操作按顺序执行。例如,操作B依赖于操作A,需在添加操作时设置依赖。

确保依赖关系合法,避免循环依赖。例如,操作A不能依赖于操作B,而B又依赖于A。

代码示例:

// 创建三个操作并设置依赖关系NSInvocationOperation *operation1 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(test1) object:nil];NSInvocationOperation *operation2 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(test2) object:nil];NSBlockOperation *operation3 = [NSBlockOperation blockOperationWithBlock:^{    for (int i = 0; i < 5; i++) {        NSLog(@"NSBlockOperation3--1----%@", [NSThread currentThread]);    }}];// 设置依赖关系:A执行后执行B,B执行后执行C[operation3 addDependency:operation1];[operation1 addDependency:operation2];

五、操作监听

可以通过设置完成块监听操作执行完成情况。

代码示例:

// 通过设置完成块监听操作完成NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{    for (int i = 0; i < 10; i++) {        NSLog(@"-operation-下载图片-%@", [NSThread currentThread]);    }    // 下载完成后执行的操作    NSLog(@"--接着下载第二张图片--");}];// 设置完成块operation.completionBlock = ^{    // 下载完成后继续执行其他操作    NSLog(@"下载完成");};

总结

掌握这些NSOperation的基本操作,可以更高效地管理多线程任务。通过合理设置优先级和依赖关系,可以确保任务按预期顺序执行。同时,通过监听操作完成,可以在任务完成后执行后续操作。

转载地址:http://yrjfk.baihongyu.com/

你可能感兴趣的文章
Objective-C实现median filter中值滤波器算法(附完整源码)
查看>>
Objective-C实现memcmp函数功能(附完整源码)
查看>>
Objective-C实现memcpy函数功能(附完整源码)
查看>>
Objective-C实现memoization优化技术算法(附完整源码)
查看>>
Objective-C实现memset函数功能(附完整源码)
查看>>
Objective-C实现merge insertion sort合并插入排序算法(附完整源码)
查看>>
Objective-C实现merge sort归并排序算法(附完整源码)
查看>>
Objective-C实现mergesort归并排序算法(附完整源码)
查看>>
Objective-C实现MidpointIntegration中点积分算法 (附完整源码)
查看>>
Objective-C实现miller rabin米勒-拉宾素性检验算法(附完整源码)
查看>>
Objective-C实现Miller-Rabin素性测试程序(附完整源码)
查看>>
Objective-C实现Miller-Rabin素性测试程序(附完整源码)
查看>>
Objective-C实现min cost string conversion最低成本字符串转换算法(附完整源码)
查看>>
Objective-C实现MinhashLSH算法(附完整源码)
查看>>
Objective-C实现MinhashLSH算法(附完整源码)
查看>>
Objective-C实现MinHeap最小堆算法(附完整源码)
查看>>
Objective-C实现minimum coin change最小硬币找零算法(附完整源码)
查看>>
Objective-C实现minimum cut最小切割流算法(附完整源码)
查看>>
Objective-C实现minimum partition最小分区算法(附完整源码)
查看>>
Objective-C实现Minimum Priority Queu最小优先级队列算法(附完整源码)
查看>>