首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

GCD概念基本使用GCD概念基本使用

1、GCD简介 全称是 Grand Central Dispatch; 纯 C 语言,提供了非常多强大的函数; GCD是非常高效的多线程开发方式,它并不是Cocoa框架的一部分 1.1 GCD优势 GCD...是苹果公司为多核的并行运算提出的解决方案; GCD 会自动利用更多的CPU内核(比如双核、四核) GCD 会自动管理线程的生命周期(创建线程、调度任务、销毁线程) 总结:将任务添加到队列,并且指定执行任务的函数...1.2 GCD函数 同步函数 通过dispatch_sync(queue , {})获取; 必须等待当前语句执行完毕,才会执行下一条语句; 不会开启其他线程,就在当前线程中完成任务; 异步函数...这种情况下也会产生死锁,任务二(同步函数)任务三(同步函数需要执行的block)相互等待; 总体来说涉及到串行队列的嵌套就容易出现死锁,使用时一定要注意;串行队列里添加同步任务队列必定会出现死锁; 2.3...^{ NSLog(@"3"); }); dispatch_async(queue1, ^{ NSLog(@"4"); }); 1 2 一定在3前面执行,4一定在3后面执行; 2.8 GCD

99320

iOS KVCKVO

通过KVC修改属性会触发KVO么? 2\. KVC的赋值取值过程是怎样的?原理是什么? 什么是KVO?...那么问题来了,同样走的是DLPerson类中的setAge方法,为什么person1就会走到,方法中而person2就不会呢?...都是实例对象 所以person1person2的isa指针指向的都是类对象, 所以说,如果对象没有添加KVO监听那么它的isa指向的就是自己原来的类对象,如下图 person2.isa ==...手动调用willChangeValueForKey:didChangeValueForKey: 直接修改成员变量会触发KVO么? 不会触发KVO,因为直接修改成员变量并没有走set方法。...KVC相关: 通过KVC修改属性会触发KVO么? 会触发KVO,如上流程图 KVC的赋值取值过程是怎样的?原理是什么? 如上流程图 KVC可以修改私有属性私有成员变量吗?

81230

iOS多线程——你要知道的NSOperation都在这里你要知道的iOS多线程NSThread、GCD、NSOperation、RunLoop都在这里

NSOperationQueue这一面向对象的多线程类,这两个类与GCD提供的功能类似,NSOperation提供任务的封装,NSOperationQueue顾名思义,提供执行队列,可以自动实现多核并行计算...NSOperation “任务的封装” GCD类似,GCD向队列提交任务,NSOperation就是对任务进行的封装,封装好的任务交给不同的NSOperationQueue即可进行串行队列的执行或并发队列的执行...NSBlockOperationNSInvocationOperation,这两个子类已经帮我们完成了各种属性的设置操作,我们只需要编写一个任务的block或者一个方法即可像使用GCD一样方便的编写多线程程序...的源码时可以发现,这些库中大量用了NSOperationNSOperationQueue,当然也用了GCD,比如SDWebImage下载图片的任务是自定义的NSOperation子类SDWebImageDownloaderOperation...下载的效果 备注 由于作者水平有限,难免出现纰漏,如有问题还请不吝赐教。

1.6K51

多线程(三):NSOperation

; dispatch_async(dispatch_get_main_queue(), ^{ [self refreshViews:data]; });}); 有个致命的问题...dataWithContentURL:是同步的拉取数据,它会一直阻塞线程直到完成请求,如果是遇到了超时的情况,它在这个时间内会一直占有这个线程;在这个期间并发队列就需要为其他任务新建线程,这样可能导致性能下降等问题...2、NSOperationQueue相对于GCD来说有以下优点: 提供了在 GCD 中不那么容易复制的有用特性。...NSOperationQueue 有两种不同类型的队列:主队列自定义队列。主队列运行在主线程之上,而自定义队列在后台执行。...如果你不使用它们默认的 setter 来进行设置的话,你就需要在合适的时候发送合适的 KVO 消息。

18620

“赢”战2020!阿里、字节:一套高效的iOS面试真题!

这里小编有收集一些相关的问题,其中大部分都是大厂面试或者面试其他人用到的,能命中大部分的面试日常工作,更希望你可以用它来检验自己! 因为问题量比较大,所以这边只会提供问题!...还是希望各位发挥自己的动手能力,来给出最好的答案~ 当然,小编也有整理一些问题答案的pdf文件,需要的话可以直接添加Q群:679884541群文件下载即可~ runtime相关问题 runtime是iOS...为什么 Runloop & KVO runloop runloop对于一个标准的iOS开发来说都不陌生,应该说熟悉runloop是标配,下面就随便列几个典型问题吧 app如何接收到触摸事件的 为什么只有主线程的...runloop是开启的 为什么只在主线程刷新UI PerformSelectorrunloop的关系 如何使线程保活 KVO 同runloop一样,这也是标配的知识点了,同样列出几个典型问题 实现原理...分别对比 GCD有哪些队列,默认提供哪些队列 GCD有哪些方法api GCD主线程 & 主队列的关系 如何实现同步,有多少方式就说多少 dispatch_once实现原理 什么情况下会死锁 有哪些类型的线程锁

1.1K31

老司机读书笔记——Effective Objective-C 2.0阅读笔记

访问实例变量不会触发KVO -init及-dealloc方法中应使用实例变量 对象内部应尽量遵守如下原则:取值采用实例变量,赋值采用属性。 ---- 2.消息转发机制流程 ?...如此操作后能会由于竞态使得部分情况外部可以修改属性值,外部也可通过KVC来更改属性值 ---- 4.将类的实现代码分散到便于管理的数个分类之中 通过分类机制,可以把类代码分成很多个易于管理的小块,...如果想要添加延时任务,条件允许的情况下应尽可能选择GCD。 ---- 9.合理使用GCD与NSOperation GCD为纯C的API,而NSOperation则是OC对象。...与NSOperation比起来GCD更加轻量,然而NSOperation却有以下几点在使用上更加便捷: 取消操作 指定依赖关系 提供KVO监听 指定优先级 重用对象 ---- 10.多用Block枚举,...好的,今天的内容就到这里了,有什么问题可以来老司机的个人博客、GitHub

44420

NSNotificationCenter 通知的使用方法详解你要知道的KVC、KVO、Delegate、Notification都在这里

KVC、KVO、Delegate、Notification的使用方法,来探讨KVO、Delegate、Notification的区别以及相关使用场景,本系列文章将分一下几篇文章进行讲解,读者可按需查阅。...机制类似,KVO触发的回调函数也可以被对个对象响应,但代理模式delegate则是一种一对一的模式,委托对象只能有一个,对象也只能委托对象通过代理的方式通信。...delegate的栗子相同,只不过这里使用通知来实现,依旧是两个页面,ViewControllerNextViewController,在ViewController中有一个按钮一个标签,点击按钮跳转到...我们在NextViewController中发送的通知是在main线程中发送的,因此ViewController中的监听器回调函数也会在main线程中执行,因此我们在监听器回调函数中修改UI不会产生任何问题...丝滑键盘 备注 由于作者水平有限,难免出现纰漏,如有问题还请不吝赐教。

2.2K60

iOS面试招人分享

出这些题的原因是,根据咱们公司对人才的需求(能给出的薪资范围),给出一条主线,面试的时候根据主线来走,期间有可以扩展的问题扩展,可以省掉的问题省掉。...有看博客,写博客吗 10.讲下你工作中遇到的一些问题如何解决它们的,讲下你的优点 1.第一题其实是没有任何问题的,这道题考的其实是开发者对代码的掌控程度,信心。...) 的博客觉得问题还可以,借鉴来的,第三题考开发者对项目的整体架构设计对项目的负责程度。...4.在问第四题的时候我会选择性的去问一下KVOKVC,没必要的就不会问,问KVC主要想知道用于做什么,KVO用于做什么,回调方法是什么...面试者若说没怎么用或者没用过,我便不会问。...问的时候都说会用,用得最多GCD,问到GCD的同步异步队列组合用法,不会;问到GCD中的group、queue、semaphore、barrier等,几乎都不会,说知道的,问得细一点,还是不会。

90360

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

seconds秒     调用这两个方法中任一方法,当前线程会睡眠(暂停)所设置的时间后,才会执行后面的操作   11)、强制停止线程,让当前线程提前结束它的生命:+ (void)exit;   7、多线程安全问题...synchronized(所对象) { //需要锁定的代码 } ;    // 线程同步:多条线程按顺序地执行任务   2)、互斥锁的优缺点:     优点:能有效防止因多线程抢夺同一资源造成的数据安全问题...纯C语言,提供了非常多强大的函数   2)、GCD的优势: GCD是苹果公司位多核的并行运算提出的解决方案;会自动利用更多的CPU内核;     会自动管理线程的生命周期(创建线程、调度任务、销毁线程...)   3)、GCD中2个核心概念:任务队列。...即表现为串行并行 5、那异步同步函数的作用在哪里?      是否开启多条线程,然后执行的队列(任务)是否按顺序还是不按顺序执行,都需要异步同步函数的配合才能实现!

2.5K40

iOS基础理论(三)

最常见的实现消息转发:就是重写方法34,吞掉一个消息或者代理给其他对象都是没问题的 如何调用_objc_msgForward?...但如果你使用一些参数中可能含有 ivar 的系统 api ,如 GCD 、NSNotificationCenter就要小心一点:比如GCD 内部如果引用了 self,而且 GCD 的其他参数是 ivar...16、GCD的队列(dispatch_queue_t)分哪两种类型?...@max.age" 25、KVCKVO的keyPath一定是属性么? KVC 支持实例变量,KVO 只能手动支持手动设定实例变量的KVO实现监听 26、apple用什么方式实现对一个对象的KVO?...其实不然,这里有一个observeValueForKeyPath:ofObject:change:context:, didChangeValueForKey:到底谁先调用的问题:如果observeValueForKeyPath

52530

iOS狗都不要,用这份面试真题,21天拿了4个大厂Offer

更多资料在公众号获取 Okcoin 1、项目中比较熟悉的问题 2、App如何减size,如何优化,资源如何减小 3、DNS解析 4、网络四层模型 5、KVO的原理,为什么要在子类重写setter方法而不在自身...11、求两条链表相交的第一个节点 12、runloop是用来做什么的 13、GCDNSOperation本质的区别是什么 14、信号量、如果有两组任务执行,需要先执行某两组,再执行另外两组,有多少种方式...为什么 6、block如何修改外部变量 7、 runtime消息转发流程结构体 8、 GCDNSOperation的利弊 9、 说一下runloop 10、 图片缓存的原理图片移除的原理(主要考察最长时间算法...gcdnsoperation如何实现 5、 做过什么性能优化的东西 美团 1、特别想介绍的项目 2、 热修复的原理? 3、运行时的介绍? 消息转发的流程 4、 OC中相关动态的方法?...5、运行时解决过什么问题 6、 kvo的实现过程? 主要解决什么问题呢? 7、 selfsuper的区别 8、组件化如何通讯 9、tcp udp http 10、做过什么网络优化的操作么?

1.4K20

【面试】阿里 iOS 开发实习电话面试记录(二)

以前的 AssetsLibrary 现在的 Photos 框架都知道吗?...(我说了关于现在引入 Photos PhotosUI 之后可以获取 LivePhoto 的问题) 都熟悉哪些框架,有没有特别了解的?...(我说我熟悉 WebKit,然后他就问了我 GCD = =) (发现我会用 GCD 之后)能不能说一下底层?...其他的光知道没用过,不敢拿出来装B) 说一下 MVVM (泪奔,难得在面试的时候能碰上自己很熟悉的,推荐不熟悉的看看最近挺火的文章《面向协议的 MVVM 架构介绍》) 知道 KVO、KVC 吗?...(其中我提到了一些推广平台,国内的有 36Kr 的 NEXT、爱范儿的 MindStore AppSo,国外的有 ProductHunt,好像他在听的时候还在一边拿笔记,人家也还在学习啊~)

71630

NSOperation

于是,Modern Objective-C开发者有两个选择:GCDNSOperation. 由于GCD已经发展的比较主流了,我们稍后再说它,先说说面向对象的NSOperation....-> isExecuting -> isFinished State是通过这些keypath的KVO通知来隐式的得到,而不是显式的通过一个state的属性。...就是说,当一个operation已经准备就绪,将要被执行时,它会为isReadykeyPath发送一个KVO的通知,对应的属性值也会变为YES....state类似,当NSOperation的被取消,是通过isCancelledkeypath的KVO来获得。当NSOperation的子类覆写cancel方法时,注意清理掉内部分配的资源。...相对于GCD非常适用于in-line的异步处理,NSOperation提供了更综合的、面向对象的计算模型,非常适用于封装结构化的数据,重复性的任务。

34720

阿里、字节:一套高效的iOS面试题( 多线程 GCD底层原理篇)

(不仅仅是线程与锁); 开发者只需要告诉 GCD 该干什么,无需多余的线程管理代码; 1、任务与队列 GCD 中有两个重要概念:任务 队列。...三、NSOperation NSOperationQueue NSOperation NSOperationQueue 是基于 GCD 更高一层的封装,完全面向对象。...两者分别对应 GCD 的任务与队列。相比 GCD,NSOperation NSOperationQueue 更加简单易用,代码可读性也更高,但是系统开销会稍微大一点。...符合 KVO 的属性 NSOperation 类的部分属性是符合 KVC KVO 的。 isCancelled > 是否被 `cancel`。只读。...在子类化 NSOperation 时,如果对上述几个属性提供了自定义实现,务必实现 KVC KVO。同样的,要是新增了一些属性,最好也实现 KVC 与 KVO

4.3K50
领券