欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ios面试题总结1

程序员文章站 2022-04-13 21:52:23
...

1.mvc和mvp的区别与使用的优缺点

MVP中的V在iOS中指的是ViewController和View。MVP将MVC的ViewController进行拆分:视图数据逻辑处理部分为P,ViewController剩余部分与View合并成V。V和P之间通过Protocol进行通信。

MVP实现了各模块的解藕,具有更好的可测试性。但是总体代码量比MVC大。
另外,iOS MVC更适用于快速开发,即代码规模较小的项目。因此将简单的MVC的Demo改成MVP,反而会显得笨拙。

2.iOS打包成功之后,运行在iPhone上会闪退,黑屏

一种是证书错误,另一种就是当前的设备并不在开发者对应的账号里面。

3.OC的字典实现原理

哈希表:

哈希:1、哈希算法 2、md5 3、SHA1 ...

可以自己写个哈希涵数,把名字 key按 26个首字母进行排序 可以用13个格子进行储存,如果首字母相同的,可以增加一个增量,H=(H(key)+d)Mod m,  d 从1开始计起 模于整个数量m=13,这样做一个增加操作。实际中如果格子里的重复数量越少,代表算法越好。效率越高。

ios面试题总结1

4..iOS中的消息发送机制和消息转发机制的区别

消息发送机制:

OC的函数调用成为消息发送。属于动态调用过程。在编译的时候并不能决定真正调用哪个函数(事实证明,在编 译阶段,OC可以调用任何函数,即使这个函数并未实现,只要申明过就不会报错。而C语言在编译阶段就会报错)。只有在真正运行的时候才会根据函数的名称找 到对应的函数来调用。

消息转发机制:

1.Method resolution 方法解析处理阶段
2.Fast forwarding 快速转发阶段
3.Normal forwarding 常规转发阶段

ios面试题总结1

5.祖件间的通讯 

iOS业界讨论组件化方案甚多,大体来说有3种。

 

  • Protocol注册方案
  • URL注册方案
  • Target-Action runtime调用方案

MGJRoute方案

URL注册方案 蘑菇街 App 的组件化之路 已经说的很清楚了 可以去看下

原理:

通过url注册服务, 其他地方通过url, 获取服务 框架在维护一个url-block的表格

特点:

  • url维护成本高 硬解码
  • 可以在组件内部任何地方调用/注册服务, 没有必要统一组件接口服务
  • 每个业务组件, 都需要依赖这个框架

6.SDWebImage是怎么来清理缓存的?

1.根据时间顺序来删除,7天过期删除掉。

2.把之前没删除的按时间顺序存起来,按自定义的最大缓存来删除,直到最大缓存一半为止。

缓存计算,它的单位为字节

[[[SDWebImageManager sharedManager] imageCache]getSize];

缓存图片的数量

[[[SDWebImageManager sharedManager] imageCache] getDiskCount];

缓存清理,第一种是内存缓存,第二种是硬盘缓存

[[[SDWebImageManager sharedManager] imageCache] clearMemory];  
[[[SDWebImageManager sharedManager] imageCache] clearDisk];

7.SDWebImage是怎么处理接收的内存警告的?

AutoPurgeCache 继承自 NSCache 自动清除缓存,调用NSCache 的 removeAllObjects方法。

8.SDWebImage中怎么计算图片的成本大小?

缓存大小

/**
 * Get the size used by the disk cache
 */
- (NSUInteger)getSize;
// 注意:返回值单位为字节
// 具体实现
- (NSUInteger)getSize {
    __block NSUInteger size = 0;
    dispatch_sync(self.ioQueue, ^{
        NSDirectoryEnumerator *fileEnumerator = [_fileManager enumeratorAtPath:self.diskCachePath];
        for (NSString *fileName in fileEnumerator) {
            NSString *filePath = [self.diskCachePath stringByAppendingPathComponent:fileName];
            NSDictionary *attrs = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil];
            size += [attrs fileSize];
        }
    });
    return size;
}

9.SDWebImage中clear和clean有什么样的区别?
 

clear

   全部删除

clean

   部分删除 

  1.根据时间顺序来删除,7天过期删除掉。

   2.把之前没删除的按时间顺序存起来,按自定义的最大缓存来删除,直到最大缓存一半为止。

ios面试题总结1