iOS多线程三种方式:NSThread,NSOperationQueue,GCD

多线程GCD,NSThread,NSOperationQueue,详细解释Demo 该demo详细解释了gcd NSThread NSOperationQueue的用法.详细解释了子线程中如何刷新UI 立即下载

//注:无论哪一种方式,都不允许在子线程中操作UI

【NSThread】(OC线程库)


    //创建一个线程并启动

    NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(oneRun:) object:nil];

    //设置name属性

    thread.name = @"线程1";

    [thread start];


    //创建线程(会自动启动)

    [NSThread detachNewThreadSelector:@selector(twoRun) toTarget:self withObject:nil];


    //获取当前线程

    NSThread *thread = [NSThread currentThread];


    //对一个子线程发送关闭消息(只是发送一个消息,子线程并不会真的关闭)

    [thread cancel]

    //判断当前线程是否收到关闭消息

    [thread isCancelled]


    //退出(关闭)当前线程

    [NSThread exit];

    //线程锁及开关方式

    //多个线程对同一个变量进行操作是不安全的,需要加锁保证同时只能有一个线程操作

    _lock = [[NSLock alloc] init];

    [_lock lock];

    [_lock unlock];


    //在子线程中调用主线程的方法(子线程中禁止操作UI),最后YES代表等主线程方法执行完以后在执行子线程,为NO表示同时进行

    [self performSelectorOnMainThread:@selector(refreshUI:) withObject:nil waitUntilDone:NO];


    //NSThread线程结束的自动发送的广播:NSThreadWillExitNotification



【NSOperationQueue】(任务队列)


    //创建操作队列(任务队列)

    _queue = [[NSOperationQueue alloc] init];

    

    //最大允许同时并发的任务数量

    _queue.maxConcurrentOperationCount = 4;

    

    //创建一个普通任务

    NSInvocationOperation *operationOne = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(operationOne) object:nil];

    [operationOne setCompletionBlock:^{

        NSLog(@"任务完成的回调");

    }];

    [_queue addOperation:operationOne];

    

    //创建一个block任务

    NSBlockOperation *operationTwo = [NSBlockOperation blockOperationWithBlock:^{

        for (int i = 0; i<10; i++) {

            NSLog(@"two = %d",i);

            sleep(1);

        }

    }];

    operationTwo.completionBlock = ^{

        NSLog(@"two end = %d",_queue.operations.count);

    };

    [_queue addOperation:operationTwo];



【GCD】(Grand Central Dispatch)(block版的线程队列)


    //最简单也是效率最高的


    dispatch_async(dispatch_get_global_queue(0, 0), ^{

        NSLog(@"这里是子线程");

        dispatch_async(dispatch_get_main_queue(), ^{

            NSLog(@"此句是在在主线程中执行的");

        });

    });


手把手复现金蝶云星空V8.1文件上传漏洞(附完整POC与修复方案) 本文深度解析金蝶云星空V8.1文件上传漏洞,提供详细的漏洞复现步骤与完整POC,涵盖技术原理、测试环境搭建及验证流程。同时给出多维防护方案,包括官方补丁部署、临时缓解措施和长期安全加固建议,帮助企业有效防范任意文件上传风险。 阅读详情

相关推荐

centos7部署mysql8.0.35,主从复制,主主集群

centos7 linux部署mysql,主从复制,主主模式

zaixiaqin的博客 1990

【iOS】多线程基础

本文介绍了iOS多线程编程的基础知识。主要内容包括: 进程与线程的概念区别: 进程是资源分配的最小单位,线程是程序执行的最小单位 线程共享进程资源,切换开销更小 多线程原理: 单核CPU通过快速切换线程实现"同时执行"效果 影响执行速度的因素包括CPU调度、任务复杂度等 线程的生命周期: 新建-就绪-运行-阻塞-死亡五个阶段 介绍了线程的exit和cancel方法 线程安全: 对比了互斥锁和自旋锁的特点 分析了atomic原子属性的实现原理 线程间通信方式 NSOperation的基本使

2301_79847748的博客 1479

Shopee App加密算法逆向实战:从抓包到libshpssdk.so的深度解析

本文详细解析了Shopee App加密算法的逆向过程,从网络抓包发现加密参数入手,通过Frida动态Hook定位到Java层关键方法,并深入追踪至Native层的libshpssdk.so核心函数。文章结合实战演示了如何利用Unidbg模拟执行环境进行算法分析与验证,并探讨了核心参数生成逻辑及风控规避要点,为移动安全与逆向工程研究提供了完整的技术路径。

weixin_28347369的博客 527

iOS- NSThread/NSOperation/GCD 三种多线程技术的对比及实现

1.iOS的三种多线程技术   1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的“并发”技术,使得程序员可以不再去关心线程的具体使用问题 ØNSOperation/NSOperationQueue 面向对象的线程技术 ØGCD —— Grand Central Dispatch(派发) 是基于C语言的框...

alexhua1444的博客 422

Snort源代码编译 _ 采坑之旅(for Windows VS2015)

    系统环境:Windows7 sp1 x64     编译环境:VS2015 SP1     Snort版本:2.9.12     daq版本:2.0.6     Snort官网:https://www.snort.org/downloads#snort-downloads 背景     最近需要实现一个类似网络防火墙的产品,主要参考Snort源码,先花了点时间简单读了下网上比较流行的《...

magictong的专栏 8888

SAP FI模块实操:用F-28和F-32搞定客户回款与手动清账,别再让未清项报表一团糟

本文详细解析了SAP FI模块中F-28和F-32事务代码在客户回款与手动清账中的实操应用,帮助财务人员高效管理未清项报表。通过标准清账六步法和手动清账实战技巧,解决因操作不规范导致的账务混乱问题,提升应收账款管理效率。

weixin_30292843的博客 452

GCD介绍: 基本概念和Dispatch Queue

iOS的三种多线程技术                     1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的“并发”技术,使得程序员可以不再去关心线程的具体使用问题 ØNSOperation/NSOperationQueue 面向对象的线程技术 ØGCD —— Grand Central Dispatch

crycheng的专栏 3万+

YOLOv11改进策略【模型轻量化】| 替换骨干网络为 GhostNet V1 基于 Ghost Module 和 Ghost Bottlenecks的轻量化网络结构

本文记录的是基于的YOLOv11网络模型轻量化方法研究。GhostNet中的Ghost模块和Ghost瓶颈结构是其轻量化的关键。Ghost模块克服了传统卷积层计算资源需求大的问题,Ghost瓶颈则合理设计了通道数量的变化以及与捷径连接的方式,能更好地在减少计算成本的同时保持较高性能,从而提升模型在移动设备上的应用能力和效率。

Limiiiing的博客 1430

ios多线程开发的常用三种方式

1.NSThread2.NSOperationQueue3.GCDNSThread:创建方式主要有两种:[NSThread detachNewThreadSelector:@selector(myThreadMainMethod:) toTarget:self withObject:nil]; 和 NSThread* myThread = [[NSThread alloc] initWithTarg

CuiAnkly的博客 533

Allegro172版本如何在联机模式下使用skill文件操作指导

注意:如果下次重新开启Symphony模式的时候可能导致symphony_skill中的文件内容被清空,所以最好将自己常用的skill文件都写到symphony_skill.txt中去,然后做好备份,需要的时候,在开启软件后把文件放到env目录中去。在用Allegeo172版本进行PCB设计的时候,有时会用到Symphony模式进行多人实时在线协同设计,如下图。这个模式设计起来可以提升设计速度,但是也有一个缺陷,就是不能使用skill文件。如下图,当调用skill的时候就会出现如下报错。

weixin_54787054的博客 1586

华为OD机试双机位C卷-水库溃坝填补(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【水库溃坝填补】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。水库溃坝填补。

qq_45776114的博客 2109

iOS多线程

iOS多线程

Unlimitedz的博客 778

基于STM32设计的水质检测系统_333

水质安全对生态环境、农业生产、工业制造以及人类健康至关重要。针对传统水质检测方式检测周期长、成本高、实时性差的问题,本项目设计并实现了一种基于STM32的水质检测系统。系统采用STM32F103RCT6作为主控芯片,集成水温、pH值、电导率和浊度等传感器,能够实时采集水质数据,并通过OLED显示屏进行本地显示。同时,利用Air724UG 4G模块通过MQTT协议将数据上传至华为云IoT平台,实现远程监测。用户可通过Qt5开发的Android手机APP和Windows上位机查看水质数据,并接收超限报警提示。此

713

NSThread,NSInvocationOperation,NSBlockOperation,GCD解析

iOS有三种多线程编程的技术,分别是: (一) NSThread (二)Cocoa NSOperation (三)GCD(全称:Grand Central Dispatch)   这三种编程方式从上到下,抽象度层次是从低到高的,抽象度越高的使用越简单,也是Apple最推荐使用的。 三种方式介绍: 1)NSThread       在处理机制上,需要开发者负责手动管理Threa

oik_ios的专栏 835

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

IOS开发之多线程使用

IOS开发之多线程使用 今天开更新的的一篇,有关 ios开发多线程的使用,说到线程,还得提一下进程。 进程:我的理解是由操作系统分配,拥有独立的空间,在这个空间里包含者多个线程,在同一个进程里的线程可以共享内存中的资源。一个应用程序可以包含多个进程,最明显的例子就是chrome浏览器,你每打开一个新页面,它的进程就增加一个。说的有点远了。 多线程:每个应用程序都有一个主线程,

Code_Key的博客 547

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

多线程实现的几种方式

多线程实现一共有四种方式,如下图: - pthread的使用   - 定义pthread typedef __darwin_pthread_t pthread_t;   - 创建pthread int pthread_create(pthread_t * __restrict, const pthread_attr_t * __restrict, void *(*)(void *), void * __restrict);   - 范例 void * run(void

木牛的博客 3893

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

关于IOS多线程的一些总结

最近看到IOS关于多线程的几种实现方式,从网上搜集了一些资料,进行了一下总结,供以后学习备用。 IOS多线程一般采用三种方式: NSTheread ,  NSOperationQueue ,  GCD.下面逐一介绍下。 (等待代码完工)。

guicl0219的专栏 667

IOS多线程的一些总结

一直觉得多线程是一块难啃的骨头,倒不是因为他有多难,只是因为心里想这很难,在平时的学习和工作中总会有意无意的避开多线程的使用。今天写这篇文章倒不是因为掌握的多好,只是对多线程的随笔,下次看到也不至于太陌生。主要对IOS中GCD以及NSOperationQueue的一些梳理

不积跬步,无以至千里;不积小流,无以成江海。 1104

iOS多线程笔记

  在iOS开发中,有三种多线程处理方式:   1. 利用NSThread   2. NSOperation和NSOperationQueue   3. 利用GCD(Grand Central Dispatch)   使用上,从1到3是越来越简单,但是,对于1和2还是需要了解一下,了解本质有利于在出现一些bug时思考得更深入一些。   下面从1开始,记录使用流程:   1. ...

weixin_30287169的博客 146

iOS 多线程 (一)

女程序员的第一篇博客  从事开发

iOS开发程序媛 516

IOS多线程的三种方式

IOS 多线程有三种主要方法 (1)NSThread (2)NSOperation (3)GCD 下面简单介绍这三个方法    1.NSThread       调用方法如下:        如函数需要输入参数,可从object传进去。     (1) [NSThread detachNewThreadSelector:@selector(threadInMainMethod:

简单の码农生活 458

iOS 多线程

多线程的三种使用方式:NSThread,NSOperationQueue和NSOperation,GCD。 一、NSThread 1.创建 (1) [NSThread detachNewThreadSelector:@selector(doSomething:) toTarget:self withObject:nil]; (2) NSThread* myThread ...

weixin_30627341的博客 81

线程是什么?进程是什么?二者有什么区别和联系?

线程是CPU独立运行和独立调度的基本单位(可以理解为一个进程中执行的代码片段),进程是资源分配的基本单位(进程是一块包含了某些资源的内存区域)。进程是线程的容器,真正完成代码执行的是线程,而进程则作为线程的执行环境。一个程序至少包含一个进程,一个进程至少包含一个线程,一个进程中的多个线程共享当前进程所拥有的资源。   谈谈你对多线程开发的理解?iOS中有几种实现多线程的方法? 好处: 1、

Review617的博客 3919

多线程

一.什么是多线程 把不同的任务放到不通的线程当中去,解决界面卡死问题 二.NSThread 2.1 三种创建线程方式 //第一种创建线程的方式 [self performSelectorInBackground:@selector(thread1) withObject:nil]; //...

chuangnizhen0989的博客 134

iOS多线程,NSThread ,NSOperationQueue ,GCD

iOS 多线程 1、进程跟线程 进程: 一个程序至少有一个进程,一个进程至少有一个线程、         有独立的内存空间、         同一个进程中的线程,共享内存中的内存跟资源、      进程相当与一个静态容器,里面装了很多活动的线程。 线程:      每一个程序都有一个主线程,程序启动的时候创建(调用main 来启动)、      主线程的生命周前,和应用程序

万里初心 667

iOS开发中关于多线程的问题(NSOperationQueue,NSThread,GCD)

1.多线程的优点和缺点分别是什么? 答:优点:1、将耗时较长的操作(网络请求、图片下载、音频下载、数据库访问等)放在子线程中执行,可以防止主线程的卡死;2、可以发挥多核处理的优势,提升cpu的使用率。       缺点:1、每开辟一个子线程就消耗一定的资源; 2、会造成代码的可读性变差;3、如果出现多个线程同时访问一个资源,会出现资源争夺的情况 3. 2.NSOperationQueu

X_codeWKH的博客 2604
上一篇: CoreData
下一篇: iOS通过ASIHTTPRequest提交JSON数据
iOS_liang
博客等级 码龄11年 2粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值