首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS - GCD和__strong参考

GCD(Grand Central Dispatch)是苹果提供的一套多线程编程API,用于简化多线程编程的复杂性。它采用了任务队列的方式,通过将任务提交到队列中,系统会自动进行线程管理和调度,从而实现并发执行任务的效果。

GCD的主要特点包括:

  1. 异步执行:可以将任务提交到队列中后立即返回,不需要等待任务执行完成。
  2. 队列管理:GCD提供了串行队列和并发队列两种类型的队列,可以根据实际需求选择合适的队列类型。
  3. 自动调度:GCD会根据系统的负载情况自动调整线程数量,以提高系统的性能。
  4. 块语法:GCD使用块语法(Block)来定义任务,使得代码更加简洁和易读。

GCD的应用场景包括:

  1. 多线程处理:可以使用GCD来实现多线程处理,提高程序的响应速度和并发能力。
  2. 异步网络请求:可以将网络请求任务放到GCD队列中异步执行,避免阻塞主线程。
  3. 图片加载和缓存:可以使用GCD来异步加载和缓存图片,提高用户体验。
  4. 数据库操作:可以使用GCD来异步执行数据库操作,提高数据库的读写效率。
  5. 后台任务处理:可以使用GCD来处理后台任务,如数据同步、日志上传等。

在腾讯云的产品中,与GCD相关的产品是云函数(Cloud Function)。云函数是一种无服务器的计算服务,可以将代码部署到云端,并根据触发条件自动执行。通过使用云函数,可以将GCD中的任务逻辑部分移植到云端执行,从而实现更高效的任务处理和资源利用。

strong是Objective-C中的一个修饰符,用于指定对象的强引用。在ARC(Automatic Reference Counting)环境下,所有的对象引用默认都是强引用,即对象在被引用时会自动增加引用计数,当引用计数为0时会自动释放对象。因此,一般情况下不需要显式地使用strong修饰符。

__strong修饰符的应用场景包括:

  1. 循环引用解决:在某些情况下,两个对象之间可能存在循环引用,导致内存泄漏。可以使用strong修饰符来解决循环引用问题,将其中一个对象的引用设置为强引用,另一个对象的引用设置为弱引用(使用weak修饰符)。
  2. 防止对象提前释放:在某些情况下,可能需要延长对象的生命周期,以防止对象在使用过程中被提前释放。可以使用__strong修饰符来保持对象的引用,确保对象在需要时一直存在。

腾讯云的产品中没有直接与strong相关的产品,因为strong是Objective-C语言的特性,与云计算领域的产品关系不大。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS 多线程-GCD

今天给大家带来多线程系列的第二篇文章 -- GCD,其大概率是我们在使用多线程时最常用的方式了。 GCD 全称是 Grand Central Dispatch,翻译过来就是大规模中央调度。...对开发者而言,面对的不再是上一篇文章iOS 多线程-Thread所描述的线程,CGD 将线程概念模糊掉,开发者转而面对的是更上层的队列任务,不再需要考虑线程的周期以及调度等等,这些交由 GCD 内部处理就好...GCD层次图 qos 属性扩展 如果大家对上次的iOS 多线程-Thread还有印象的话,想必会对Thread的qualityOfService属性有点印象,其类型为QualityOfService;iOS...在 GCD 中,对开发者而言,任务才是关注的操作单位,上述的队列只是对任务进行管理调度。...参考资料 DispatchQueueTest[6] 参考资料 [1]swift-corelibs-libdispatch: https://github.com/apple/swift-corelibs-libdispatch

77030

iOS多线程 - GCD

二、任务队列 GCD 中有 2 个核心概念 任务:执行什么操作 队列:用来存放任务 GCD 的使用就 2 个步骤 定制任务 确定想做的事情 *将任务添加到队列中 GCD 会自动将队列中的任务取出...; 用异步的方式执行任务 dispatch_async(dispatch_queue_t queue, dispatch_block_t block); 同步异步的区别 同步:只能在当前线程中执行任务...并发功能只有在异步(dispatch_async)函数下才有效 串行队列(Serial Dispatch Queue) 让任务一个接着一个地执行(一个任务执行完毕后,再执行下一个任务) 五、容易混淆的术语 同步异步主要影响...:能不能开启新的线程 同步:只是在当前线程中执行任务,不具备开启新线程的能力 异步:可以在新的线程中执行任务,具备开启新线程的能力 并发串行主要影响:任务的执行方式 并发:允许多个任务并发(同时...); //在前面任务执行结束后它才执行,而且它后面的任务等它执行完成之后才会执行 2.延时执行 iOS 常见的延时执行 调用 NSObject 的方法 [self performSelector:@selector

67320

iOS多线程NSThread,NSOperationGCD详解

iOS开发中我们可以用以下三种形式来实现NSThread: 运行效果如下: 当点击了按钮以后会启动一个新的线程,进行图片的下载,在这期间并不会去阻塞主线程的执行。... NSBlockOperation来封装,两种方式没有本质的区别,但是后者使用Block的形式进行代码组织,在使用的过程中更加方便。...可以看到 NSOperation NSOperationQueue 分别对应 GCD 的 任务 队列 。...在开始使用GCD的时候,需要搞清楚任务队列这两个概念。...NSOperation是对GCD面向对象的ObjC封装,但是相比GCD基于C语言开发,效率却更高,建议如果任务之间有依赖关系或者想要监听任务完成状态的情况下优先选择NSOperation否则使用GCD.

71120

iOS——GCD的死锁案例

在项目中,用GCD的时候非常多,但是我最近脑子里一直在问自己一个问题,死锁是什么。惭愧的是这个当初清晰的概念现在愈加模糊,考虑到自己并没有专门整理过死锁的文章,所以写一篇技术文章来帮助自己梳理概念。...GCD提供了功能强大的任务队列控制功能,相比于NSOperationQueue更加底层,因此如果不注意也会导致死锁。 所谓死锁,通常指有两个线程AB都卡住了,并等待对方完成某些操作。...串行与并行 在使用GCD的时候,我们会把需要处理的任务放到Block中,然后将任务追加到相应的队列里面,这个队列,叫做Dispatch Queue。...从以上的分析来看,得到的几个结果:1最先执行;25顺序不一定;4一定在3后面。...最终,只能得到14顺序不定的结果。 总结 在总结完这些GCD死锁的情况的以后,我觉得脑子里关于GCD中死锁的概念也逐渐清晰了。以后在项目中也会运用的时候也会更加注意。

1.9K30

ios线程GCD队列同步异步的关系

如果开启大量的线程,会占用大量的内存空间,降低程序的性能;     线程越多,cpu在调度线程上的开销就越大;     程序设计更加复杂:比如线程之间的通信、多线程的数据共享 4、什么是主线程   1)、一个ios...)、主线程的使用注意:     别将比较耗时的操作放到主线程中;耗时操作会卡住主线程,严重影响UI的流畅度,给用户一种”卡“的坏体验;     所以一般将耗时操作放在子线程(后台线程、非主线程) 5、ios...纯C语言,提供了非常多强大的函数   2)、GCD的优势: GCD是苹果公司位多核的并行运算提出的解决方案;会自动利用更多的CPU内核;     会自动管理线程的生命周期(创建线程、调度任务、销毁线程...)   3)、GCD中2个核心概念:任务队列。...即表现为串行并行 5、那异步同步函数的作用在哪里?      是否开启多条线程,然后执行的队列(任务)是否按顺序还是不按顺序执行,都需要异步同步函数的配合才能实现!

2.5K40

iOS block与__block、weak、__weak、__strong

_NSConcreteStackBlock ) __NSMallocBlock __ ( _NSConcreteMallocBlock ) 需要注意是,ARC下只存在__NSGlobalBlock_...NSGlobalBlock, 除非block内部出现其他变量,auto变量或者对象属性变量等,就是__NSMallocBlock 为什么block要被拷贝到堆区,变成__NSMallocBlock,可以看如下链接解释:Ios...,调用block时,会在堆区开辟新的值的存储空间, 指针数据类型,__block修饰后,调用block时,会在堆区开辟新的指针变量地址的存储空间 2、并且无论是基础数据类型还是指针类型,block内使用...__weak,__strong 两者本身也都会增加引用计数。...使用__strong,会使得block作用区间,保存一份对该对象的强引用,引用计数+1,一旦block执行完毕,__strong变量就会销毁,引用计数-1 比如block中,代码执行分7步,在执行第二步时

1.7K62

iOS - 多线程(三):GCD

GCD 初识  1.1 GCD 介绍  1.2 GCD 的使用步骤  1.3 GCD 执行任务的方式   1.3.1 同步   1.3.2 异步   1.3.3 同步异步的区别  1.4...GCD 源码分析(待更新) 4. GCD 相关题目 相关链接 参考 1....1.2 GCD 的使用步骤 GCD 的两个核心 任务:执行什么操作 队列:用来存放任务 GCD 的任务 GCD 中的任务有两种封装:dispatch_block_t dispatch_function_t...进阶 2.1 GCD 队列的服务质量与优先级 2.1.1 Quality of Service(QoS) 介绍 来自文章:关于GCD开发的一些事儿 这是在 iOS8 之后提供的新功能,苹果提供了几个...2.8 Dispatch Semaphore 信号量 GCD 信号量dispatch_semaphore可以用来控制最大并发数量,可以用来实现 iOS 的线程同步方案。

2.3K31

iOS GCD编程之dispatch

简介 为何使用GCD GCD提供很多超越传统多线程编程的优势: 易用: GCD比之thread跟简单易用。...由于GCD基于work unit而非像thread那样基于运算,所以GCD可以控制诸如等待任务结束、监视文件描述符、周期执行代码以及工作挂起等任务。...效率: GCD被实现得如此轻量优雅,使得它在很多地方比之专门创建消耗资源的线程更实用且快速。 这关系到易用性:导致GCD易用的原因有一部分在于你可以不用担心太多的效率问题而仅仅使用它就行了。...安全: 使用GCD,我们就不可能意外写出具有不成对Lock的代码。在常规Lock代码中,我们很可能在解锁之前让代码返回了。使用GCD,队列通常持续运行,你必将归还控制权。...控制: 使用GCD我们可以挂起恢复dispatch_queue,而这是基于锁的方法所不能实现的。

1.2K10

iOS之属性修饰符 retain、strongcopy区别测试

;                    给字符串属性赋值可变字符串,retain、strong修饰的可变不可变字符串属性是指针拷贝,而copy修饰的可变不可变字符串属性都是内容拷贝。...、copy修饰的可变不可变字符串属性都是指针拷贝; 给字符串属性赋值可变字符串,retain、strong修饰的可变不可变字符串属性是指针拷贝,而copy修饰的可变不可变字符串属性都是内容拷贝。..., copy修饰的属性赋值,都是指针拷贝;          2)、不可变字符串调用mutableCopy, 可变字符串调用copy,可变字符串调用mutableCopy方法给strong、copy...TestArr : NSObject //测试数组的copystrong属性 @property (nonatomic, strong) NSArray *arrStrong; @property...、copy修饰的数组属性赋值,都是指针拷贝;      2)、 不可变数组调用mutableCopy, 可变数组调用copy, 可变数组调用mutableCopy方法给strong、copy修饰的数组属性赋值

2.2K40

iOS多线程之GCD、OperationQueue 对比实践记录

iOS 提供了一些技术,允许您异步执行任何任务,而无需自己管理线程。异步启动任务的技术之一是 Grand Central Dispatch (GCD)。...区别 GCD: 将任务(block)添加到队列(串行/并发/主队列),并且指定任务执行的函数(同步/异步) GCD是底层的C语言构成的API iOS 4.0 推出的,针对多核处理器的并发技术 在队列中执行的是由...iOS 2.0 推出的,苹果推出 GCD 之后,对 NSOperation 的底层进行了全部重写。...抽象类的用处是定义子类共有的属性方法。NSOperation 是基于 GCD 做的面向对象的封装。相比较 GCD 使用更加简单,并且提供了一些用 GCD 不是很好实现的功能。...官方并发编程词汇表 本文 demo 地址 MultiThreadDemo 参考文章 Concurrency Programming Guide iOS Concurrency: Getting Started

1.5K40

iOS多线程:『GCD』详尽总结

为了不辜负大家的喜欢,也为了更好的让大家了解 iOS 多线程,以及 GCD 的相关知识,我对这篇文章进行了重新梳理,在原有文章的基础上修改了原文存在的问题,并增加了更多关于 GCD 相关知识使用方法,...在 Mac OS X 10.6 雪豹中首次推出,也可在 iOS 4 及以上版本使用。 为什么要用 GCD 呢?...GCD 任务队列 学习 GCD 之前,先来了解 GCD 中两个核心概念:任务队列。 任务:就是执行操作的意思,换句话说就是你在线程中执行的那段代码。在 GCD 中是放在 block 中的。...队列的结构可参考下图: 队列(Dispatch Queue).png 在 GCD 中有两种队列:串行队列并发队列。两者都符合 FIFO(先进先出)的原则。...参考资料: iOS GCD之dispatch_semaphore(信号量) iOS多线程详尽总结系列文章: iOS多线程:『pthread、NSThread』详尽总结 iOS多线程:『GCD』详尽总结

93970

iOS--多线程之GCD

GCD 一、简单介绍 1.什么是GCD?...这个库中,这个调度库包含了GCD的所有的东西,但任何IOS程序,默认就加载了这个库,在程序运行的过程中会动态的加载这个库,不需要我们手动导入。...二、任务队列 1.GCD中有2个核心概念 (1)任务:执行什么操作 (2)队列:用来存放任务 2.GCD的使用就2个步骤 (1)定制任务 (2)确定想做的事情 将任务添加到队列中,GCD会自动将队列中的任务取出...之前全局并发队列的优先级/iOS8以后代表服务质量 ios 8之前 #define DISPATCH_QUEUE_PRIORITY_HIGH 2 // 高 #define DISPATCH_QUEUE_PRIORITY_DEFAULT...五、GCD的常用方法 1.延迟执行 ①介绍 iOS常见的延时执行有2种方式 a.利用NSTimer的方法 [NSTimer scheduledTimerWithTimeInterval:2.0 target

653110

iOS多线程:GCD使用介绍

背景 最近作者在进行多线程问题排查整理时,发现了好多问题都是由于GCD的使用不规范造成的,因此在这里主要分享GCD的使用方法,希望大家能够在测试时更早发现问题。 ?...GCD 任务队列 学习 GCD 之前,先来了解 GCD 中两个核心概念:『任务』 『队列』。 任务:就是执行操作的意思,换句话说就是你在线程中执行的那段代码。...在 GCD 中是放在 block 中的。执行任务有两种方式:『同步执行』 『异步执行』。两者的主要区别是:是否等待队列的任务执行结束,以及是否具备开启新线程的能力。...队列的结构可参考下图: ? 在 GCD 中有两种队列:『串行队列』 『并发队列』。两者都符合 FIFO(先进先出)的原则。两者的主要区别是:执行顺序不同,以及开启线程数不同。...任务的创建方法 GCD 提供了同步执行任务的创建方法 dispatch_sync 异步执行任务创建方法 dispatch_async。

1.1K30
领券