1.GCD与NSOperation的区别
- GCD的核心是C语言写的系统服务,执行和操作简单高效,因此NSOperation底层也通过GCD实现,换个说法就是NSOperation是对GCD更高层次的抽象,这是他们之间最本质的区别。因此如果希望自定义任务,建议使用NSOperation
- 依赖关系,NSOperation可以设置两个NSOperation之间的依赖,第二个任务依赖于第一个任务完成执行,GCD无法设置依赖关系,不过可以通过dispatch_barrier_async来实现这种效果;
- KVO(键值对观察),NSOperation和容易判断Operation当前的状态(是否执行,是否取消),对此GCD无法通过KVO进行判断;
- 优先级,NSOperation可以设置自身的优先级,但是优先级高的不一定先执行,GCD只能设置队列的优先级,无法在执行的block设置优先级;
- 继承,NSOperation是一个抽象类,实际开发中常用的两个类是NSInvocationOperation和NSBlockOperation,同样我们可以自定义NSOperation,GCD执行任务可以自由组装,没有继承那么高的代码复用度;
- 效率,直接使用GCD效率确实会更高效,NSOperation会多一点开销,但是通过NSOperation可以获得依赖,优先级,继承,键值对观察这些优势,相对于多的那么一点开销确实很划算,鱼和熊掌不可得兼,取舍在于开发者自己;
2.IQKeyboard的底层原理
3.RAC中信号量截断
4.scheme与UniveralLink的区别
schema
但 schema 有个弊端:iOS中,如果用户没有安装App,那么他一定会经历2个事情:1、schema打开app,但是失败,延迟后,跳转下载App2、跳转下载App之前schema会弹个可恶的跳转失败的框,然后再延迟后弹跳转AppStore的框
再就是 schema 被微信等应用禁止跳转了。
UniveralLink
Universal Link和 schema 一样,目前还未被微信等禁止,也不会弹出跳转失败的弹出框。APP第一次启动 or APP更新版本后第一次启动APP向工程里配置的域名发起Get请求拉取apple-app-association Json FileAPP将apple-app-association注册给系统由任意webview发起跳转的url,如果命中了apple-app-association注册过的通用链接打开App,触发Universal Link delegate没命中,webview继续跳转url在你进行apple-app-association 以及 App工程的配置之后,整个Universal Link的运作流程完全由系统控制了
5.http与https的区别,哪个数据传输更快
https会影响传输效率,影响主要来自两方面:
- 协议交互所增加的网络 RTT(round trip time)。
- 加解密相关的计算耗时。
6.使用WKWebView时是否遇到困难
7.组件化怎么实现的,有没有考虑过多工程
8.消息转发什么时候触发
9.设计模式主要用过哪些,适配器模式等用过吗
10.block如何修改变量,是否能修改所有变量
11.NSArray的几种初始化方法,区别是什么
swift相关
1.weak与unowend的区别
2.OC结构体与Swift结构体的区别