1、MVC与MVP的区别以及使用的优缺点。
MVC:Model用来存储数据 View用来展示 C将View与Model联系起来Model与View的耦合度较高C中的代码冗余
MVP:面向协议的编程View与Model完全没有任何联系 实现解偶
2、MVC经典的架构中说说有哪些常用的设计模式?
(delegate、dataSource代理模式)、(Notification、KVO观察者模式)、(target、action命令模式)、MVC中介者模式、策略模式(淘宝)
3、怎么解决iOS打包成功后,运行在iphone上会闪退、黑屏的问题?
证书有误
设备不在开发者账号里
访问相册相机时没有在plist文件里加访问权限
4、说一说OC中字典的实现原理?
字典可简单的理解为 [哈希表] (https://baike.baidu.com/item/哈希表/5981869?fr=aladdin)
哈希:什么是hash?[哈希] (https://baike.baidu.com/item/哈希表/5981869?fr=aladdin)
哈希表的本质为`数组`
[哈希函数] (https://baike.baidu.com/item/哈希函数/9796422?fr=aladdin)的本质为`映像`
5、iOS中消息发送机制与消息转发机制的区别?
消息发送机制:使用运行时,通过selector快速去查找IMP的过程 实例对象isa——>类对象isa———>元类isa———>根元类isa 本质是objc_msgSend()
消息转发机制:IMP找不到的时候,通过一些方法做转发处理
![](https://img.haomeiwen.com/i16503470/1cdb724384646d0c.png)
案例:当项目开发时 在cell里添加多个手势 而手势有时就会发生冲突 那样就会引发崩溃 此时我们就可以在冲突发生前进行消息转发 将冲突转发到别的类进行处理
6、组件间的通讯是通过什么方式来做的?请详细解释一下。
组件间的通讯,使用路由的方式来进行通讯。
之前的方式:
![](https://img.haomeiwen.com/i16503470/162ebb1973aee855.png)
组件化方式:
![](https://img.haomeiwen.com/i16503470/76898a302194751c.png)
路由可以简单的理解为中介类中介类里可以使用performSelector 和target 通过target 和action来唯一确认类里的方法
![](https://img.haomeiwen.com/i16503470/4a2c5dfbd6c11a0f.png)
调用方法:
![](https://img.haomeiwen.com/i16503470/491aad63cb7b518d.png)
实际上为跳转过程(解偶)
![](https://img.haomeiwen.com/i16503470/a8cdbf9d316cfd1a.png)
7、SDWebImage是怎么来清理缓存的?
清理磁盘缓存:
![](https://img.haomeiwen.com/i16503470/88636d7762c40e27.png)
![](https://img.haomeiwen.com/i16503470/d5a0e857adf511c3.png)
![](https://img.haomeiwen.com/i16503470/8c76f496c3536e14.png)
![](https://img.haomeiwen.com/i16503470/682f7ed0359a574f.png)
![](https://img.haomeiwen.com/i16503470/a5fc723124ec2412.png)
![](https://img.haomeiwen.com/i16503470/372dcc74f6472f66.png)
![](https://img.haomeiwen.com/i16503470/8207debc8e7b82ac.png)
总结:
1、根据时间顺序(7天周期,默认7天)过期的删除
2、把之前没删除的按时间顺序存起来,根据自定义的最大缓存(为设置最大缓存,默认最大缓存为磁盘大小),删除到最大缓存的一半为止。(设置自定义最大缓存才会走这一步自定义)一般情况下不设置最大缓存量,据需求而定。
8、SDWebImage是怎么处理接收的内存警告的?
![](https://img.haomeiwen.com/i16503470/2411fd53ac6553a6.png)
![](https://img.haomeiwen.com/i16503470/ee25d8ab5c533145.png)
![](https://img.haomeiwen.com/i16503470/c31f85cdd74ba2f1.png)
9、SDWe bImage中怎么计算图片的成本大小
![](https://img.haomeiwen.com/i16503470/bc2037bdf0c75906.png)
注意:当手机端下载图片时,根据scale缩放因子来判断是@2x还是@3x的图片。
![](https://img.haomeiwen.com/i16503470/a0e76c63c76d18f6.png)
10、SDWebImage中clear和clean有什么区别?
![](https://img.haomeiwen.com/i16503470/ea9f70c2013a4b87.png)
最大区别:
clear是全部删除(清空)整个文件夹删除,再创建文件夹。
clean是部分删除:
1)根据周期
2)根据磁盘最大缓存
网友评论