美文网首页
面试总结(三)

面试总结(三)

作者: 冰land | 来源:发表于2017-11-22 22:48 被阅读14次

1、AFNETWorking

分为5个功能模块:

  • 网络通信模块(AFURLSessionManager、AFHTTPSessionManager)
  • 网络状态监听模块(Reachability)
  • 网络通信安全策略模块(Security)
  • 网络通信信息序列化/反序列化模块(Serialization)
  • 对与iOS UIKit库的扩展(UIKit)

2、SDWebImage底层实现原理

  • 入口setImageWithURL:placeholderImage:options会把placeholderImage显示,然后SDWebImageManager根据URL开始处理图片
  • 先从内存图片缓存中查找是否有该图片
  • 如果内存缓存中没有,生成NSInvocationOperation添加到队列开始从硬盘查找图片是否已经缓存
  • 根据URLKey在硬盘缓存目录下尝试读取图片文件。这一步是在NSOperation进行的操作
  • 如果上一操作从硬盘读取到了图片,将图片添加到内存缓存中(如果空闲内存过小,会先清空内存缓存)。
  • 如果从硬盘缓存目录读取不到图片,说明所有缓存都不存在该图片,需要下载图片
  • 共享或重新生产一个下载器SDWebImageDownloader开始下载图片。图片下载由NSURLConnection来做,实现相关delegate来判断图片下载中、下载完成和下载失败。
  • 图片下载完成后,将图片保存到SDImageCache中,内存缓存和硬盘缓存同时保存。写文件到硬盘也在单独NSInvocationOperation完成,避免拖慢主线程。

简单的流程

根据图片的url去图片缓存中查找对应的图片,如果存在将图片显示在cell上;
根据图片的url去沙盒中查找对应的图片,如果存在,加载沙盒中的对应的图片,将图片显示在cell上;
显示占位图片;
根据图片的url查看下载操作缓存中查找对应的下载操作,如果存在,继续下载;
创建下载操作,并放在下载操作缓存中;
下载成功后,将当前下载操作从下载操作缓存中删除,将图片放在图片缓存中;
刷新表格(当前行);
将图片放入沙盒;

iOS多线程

  • NSThread
    使用NSThred对象建立一个线程比较方便,但是,要使用NSThread管理多个线程非常困难,线程的生命周期需要自己管理;
  • NSOperation、NSOperationQueue
    是使用GCD实现的一套Objective-C的API,是面向对象的线程技术,提供了一些在GCD中不容易实现的特性,如:限制最大并发数量、操作之间的依赖关系
  • GCD
    是基于C语言的底层API,用Block定义任务,使用起来非常灵活便捷,提供了更多的控制能力以及操作队列中所不能使用的底层函数。(栅栏方法dispath_barrier_async、延时执行方法dispatch_after、一次行代码dispatch_once、快速迭代方法dispatch_apply、队列组dispatch_group用于多个任务处理完毕之后想要执行的结束处理)

相关文章

  • 阿里腾讯头条美团等iOS面试总结

    阿里iOS面试总结 头条iOS面试总结 腾讯iOS面试总结 百度iOS面试总结 美团iOS面试总结

  • 面试总结——Java高级工程师

    面试总结——Java高级工程师 面试前面也总结了一和二, 这第三篇可能更偏向于是内心的独白篇和面试技巧总结吧......

  • 面试总结(三)

    1、AFNETWorking 分为5个功能模块: 网络通信模块(AFURLSessionManager、AFHTT...

  • 面试总结(三)

    —————————————————————————————————————————————————————————...

  • 面试总结 三

    前言:累了。直接说重点:总结问题,积累经验。 问题: 1.沉浸式状态栏2.http和Socket的区别3.进程保活...

  • 三、面试总结(三)

    1,java堆,分新生代老年代,新生代有Eden,from surviver,to surviver三个空间,堆被...

  • Java面试题汇总

    Java面试题总结 Java面试题总结一Java面试题总结二

  • 面试总结——Java高级工程师(附答案)

    面试前面也总结了一和二, 这第三篇可能更偏向于是内心的独白篇和面试技巧总结吧..... 一、独白 之前也面试别人,...

  • 面试总结——Java高级工程师

    面试前面也总结了一和二, 这第三篇可能更偏向于是内心的独白篇和面试技巧总结吧..... 一、独白 之前也面试别人,...

  • 面试总结——Java高级工程师

    面试前面也总结了一和二, 这第三篇可能更偏向于是内心的独白篇和面试技巧总结吧..... 一、独白 之前也面试别人,...

网友评论

      本文标题:面试总结(三)

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