![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Object-C
文章平均质量分 74
c_xie
这个作者很懒,什么都没留下…
展开
-
ios多线程操作(十一)—— NSOperation的高级操作
NSOperation可以调用start方法来执行任务,但默认是同步执行的,如果将NSOperation添加到 NSOperationQueue(操作队列)中,系统会自动异步执行队列中的操作。 NSOperationQueue中可以对操作进行取消,暂停和恢复 取消函数为: - (void)cancelAllOperations; 也可以调用N原创 2015-03-24 23:09:36 · 1273 阅读 · 1 评论 -
ios多线程操作(十)—— 用NSOperation开启多线程操作
想要使用NSOperation(操作)来开启多线程操作必须配合NSOperationQueue(队列)来实现。NSOperation中并没有“任务”这个概念,取而代之的是“操作”,操作中封装着需要在子线程上执行的代码。具体的实现步骤如下: 1、先将需要执行的操作封装到一个NSOperation对象中 2、然后将NSOperation对象添加到NSOperationQueue原创 2015-03-22 22:30:49 · 783 阅读 · 0 评论 -
ios多线程操作(八)—— GCD调度组
有这么一个需要,分别执行2个耗时的异步操作,等2个异步操作都执行完毕后在回到主线程执行操作。如果想要快速高效地实现这个需求,可以考虑使用调度组。调度组的创建代码如下:dispatch_group_t group = dispatch_group_create();往调度组里面添加任务的函数如下:dispatch_group_async(dispatch_group_t group,原创 2015-03-22 19:22:00 · 2914 阅读 · 0 评论 -
ios多线程操作(九)—— 用NSOperation代替GCD
NSOperation是另外一个“并发技术”,它可以使开发者在不用关心线程的情况下进行多线程操作!!! NSOperation的底层是用GCD进行封装,但并不是说NSOperation功能就没有GCD强大,相反,NSOperation的一些高级功能在GCD上不好做,但同样地GCD上的一些高级功能在NSOperation上也不好做,现在来看一下NSOperation和GCD的对比!原创 2015-03-22 21:23:54 · 1360 阅读 · 0 评论 -
ios多线程操作(七)—— GCD延迟操作与一次性代码
使用GCD函数可以进行延时操作,该函数为dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ }); 现在我们来分解一下参数dispatch_time(DISPATCH_TIME_N原创 2015-03-21 21:55:23 · 2679 阅读 · 0 评论 -
ios多线程操作(一)—— 多线程基础与原理
一、进程 进程是指在系统中正在运行的一个应用程序,每个进程之间都是独立的,每个进程都运行在其专用且受保护的内存空间内二、线程 一个进程要想执行任务就必须要有线程,每一个进程至少都要有一条线程。 线程是进程的基本执行单元,一个进程的所有任务都在线程中执行。 线程又分为主线程和子线程: 主线程:一个ios程序运行后,默认会开启一条原创 2015-03-17 22:10:11 · 1055 阅读 · 0 评论 -
剖析程序中的栈与堆的内存分配
在计算机系统中,运行的应用程序的数据都保存在内存中,不同类型的数据所保存在的区域不同,应用程序中总共有五个内存区域:(1)、栈区【stack】:由编译器自动分配并释放,一般存放函数的参数值,局部变量等(2)、堆区【heap】:由程序员分配和释放内存,如果程序员不释放,程序结束时,可能会由操作系统回收(3)、全局区【静态区】【static】:全局变量和静态变量的存储是放在一起的,而该区又原创 2015-03-17 21:37:26 · 860 阅读 · 0 评论 -
ios多线程操作(六)—— GCD全局队列与主队列
GCD默认已经提供了全局的并发队列供整个应用使用,所以可以不用手动创建。 创建全局队列的函数为dispatch_queue_t q = dispatch_get_global_queue(long identifier, unsigned long flags) 参数类型为:long identifier:ios 8.0 告诉队列执行任务的“服务质量 quality原创 2015-03-20 21:07:44 · 6997 阅读 · 0 评论 -
ios多线程操作(二)—— NSThread的应用
一、基本使用1、三种创建子线程的方法(1)NSThread直接创建,一个NSThread对象就代表一条线程//实例化一个 NSThread对象 NSThread *t1 = [[NSThreadalloc]initWithTarget:selfselector:@selector(longOperation:)object:@"NSThread"];原创 2015-03-17 23:30:28 · 1000 阅读 · 1 评论 -
ios多线程操作(四)—— GCD核心概念
GCD全称Grand Central Dispatch,可译为“大派发中枢调度器”,以纯C语言写成,提供了许多非常强大的函数。GCD是苹果公司为多核的并行运算提出的解决方案,它可以自动利用更多的CPU内核来参与运算,会自动管理线程的生命周(创建线程、调度任务、销毁线程),而程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理代码! GCD中有两个核心概念,一是任务,二是队列。原创 2015-03-19 20:50:37 · 1142 阅读 · 0 评论 -
ios多线程操作(三)—— 线程通讯
一个进程中,线程并非单独存在,往往需要与其他线程进行通讯以执行特定的任务。接下来就用一个简单的例子来实现线程之间最简单的通讯,并借此探究一下UI控件下得常见设置 需求:从网络上下载一张图片在屏幕上显示,图片可以滚动,可以捏合缩放大小 项目开搞新建一个新项目。因为视图有滚动的需求,所以需要添加一个UIScrollView以及一个显示图片的UIImageView@i原创 2015-03-18 22:32:12 · 827 阅读 · 0 评论 -
ios多线程操作(五)—— GCD串行队列与并发队列
GCD的队列可以分为2大类型,分别为串行队列和并发队列 串行队列(Serial Dispatch Queue): 一次只调度一个任务,队列中的任务一个接着一个地执行(一个任务执行完毕后,再执行下一个任务) 创建一个队列 dispatch_queue_t q = dispatch_queue_create(const char *label, disp原创 2015-03-19 21:53:14 · 9978 阅读 · 0 评论 -
ios多线程操作(十二)—— 自定义NSOperation实现网络下载后回调
NSoperation作为一个抽象类,本身不具备封装操作的能力,所以必须使用它的子类来实现多线程操作,但当子类也无法达到我们的需求时,我们可以自定义一个NSoperation的子类,自己写实现方法! 自定义NSoperation的步骤很简单,只要重写main方法,在里面实现想执行的异步任务,但如果是异步操作,也就无法访问到主线程的自动释放池,所以需要自己手动创建自动释放池!原创 2015-03-25 19:06:39 · 1716 阅读 · 0 评论