美文网首页sdw三方
iOS面试之第三方库模块

iOS面试之第三方库模块

作者: 听木子说心语 | 来源:发表于2019-12-17 15:30 被阅读0次

第三方库内容如下:

  • AFNetworking
  • SDWebImageView
  • Reactive Cocoa
  • AsyncDisplayKit
  • 等等
第三方库.png

1. AFNetworking

github地址

iOS客户端的第三方网络框架  
AFNetworking.png

AFURLSessionManager

  • 创建和管理NSURLSession,NSURLSessionTask
  • 实现NSURLSessionDelegate等协议的代理方法
  • 引入AFSecurityPolicy保证请求安全
  • 引入AFNetworkReachabilityManager监控网络状态

2. SDWebImageView

github地址

异步下载图片缓存的框架
SDWebImageView.png

加载图片流程

  • 查找内存缓存
  • 查找磁盘缓存
  • 网络下载

3. Reactive Cocoa

github地址

函数响应式编程框架
  • 信号
ReactiveCocoa中的核心类RACSignal
RACSignal继承于RACStream
RACSignal子类RACDynamicSignal,RACReturnSignal,RACEmptySignal,RACErrorSignal
- 信号代表一连串的状态
- 在状态改变时,对应的订阅者RACSubscriber就会收到通知执行相应的指令

4. AsyncDisplayKit

github地址

提升界面渲染性能
  • 处理问题

    • 解决布局耗时计算,文本宽高计算,视图布局计算
    • 解决渲染问题,文本渲染,图片解码,图形绘制
    • UIKit对象,对象创建,对象调整,对象烧毁
    • 减轻主线程的压力,能把更多事情交给子线程做
  • 基本原理


    AsyncDisplayKit 基本原理
- UIView作为CALayer的delegate
- CALayer作为UIView的成员变量
- AsyncDisplayKit封装了ASNode的类
- ASNode有一个view的成员变量,生成view
- UIView有个node的属性,可以获取到对应的节点
- ASNode可以放到后台线程中处理,是线程安全
- UIView,CALayer等在主线程中使用
- ASNode的修改和提交,会对其进行封装并提交到一个全局容器当中
- AsyncDisplayKit也在RunLoop中注册一个观察者
- 当RunLoop进入休眠前, AsyncDisplayKit执行该loop内提交的所有任务

面试题

  • 系统的UI事件传递机制是怎样的?
  • KVO的实现原理?
  • 消息传递机制和消息转发流程
  • 当一个对象废弃的时候,指向它的weak指针为何会自动置为nil?
  • Block的实质?使用Block为何容易产生循环引用?
  • 怎样利用GCD实现高效的多读单写逻辑?
  • RunLoop为何能做到有事做事,没事休息?
  • 怎样解决DNS劫持?
  • 怎样设计一个图片缓存框架?
  • 请编写查找一个字符串中,第一个只出现一次的字符的算法

相关文章

网友评论

    本文标题:iOS面试之第三方库模块

    本文链接:https://www.haomeiwen.com/subject/amjqgctx.html