1.GCD与NSOperation的区别

  1. GCD的核心是C语言写的系统服务,执行和操作简单高效,因此NSOperation底层也通过GCD实现,换个说法就是NSOperation是对GCD更高层次的抽象,这是他们之间最本质的区别。因此如果希望自定义任务,建议使用NSOperation
  2. 依赖关系,NSOperation可以设置两个NSOperation之间的依赖,第二个任务依赖于第一个任务完成执行,GCD无法设置依赖关系,不过可以通过dispatch_barrier_async来实现这种效果;
  3. KVO(键值对观察),NSOperation和容易判断Operation当前的状态(是否执行,是否取消),对此GCD无法通过KVO进行判断;
  4. 优先级,NSOperation可以设置自身的优先级,但是优先级高的不一定先执行,GCD只能设置队列的优先级,无法在执行的block设置优先级;
  5. 继承,NSOperation是一个抽象类,实际开发中常用的两个类是NSInvocationOperation和NSBlockOperation,同样我们可以自定义NSOperation,GCD执行任务可以自由组装,没有继承那么高的代码复用度;
  6. 效率,直接使用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结构体的区别