iOS面试

聊几个iOS中的面试题

2020-05-09  本文已影响0人  hello_bear

一、内存管理

1、分析工具:

2、原因分析:
目前,在ARC环境下,导致内存泄漏的根本原因是代码中存在循环引用,从而导致一些内存无法释放,最终导致dealloc()方法无法被调用。
主要原因大概有一下几种类型:

二、单例设计模式

1、优点:节省内存开销
2、系统自带的单例模式:[UIApplication shareApplication],[NSUserdefaults standardUserDefualts],[UIDevice currentDevice];

三、json/XML

XML优缺点:

四、数据存储

内存存储和磁盘存储,磁盘存储又分为数据库存储和文件系统存储。
内存存储:NSURLConnection,NSCache。
文件系统存储:plist、NSUserDefaults、keyChain存储,NSKeyedArchiver
数据库存储:SQLite3、FMDB
1、沙盒
如果程序中有需要长时间持久化的数据,就选择Documents,如果有体积大但是并不重要的数据,就可以选择交给Library,而临时没用的数据当然是放到temp。至于Preference则可以用来保存一些设置类信息,后面会讲到偏好设置的使用方法。

2、plist存储

//写入数据
[dict writeToFile:filePath atomically:YES];

//读取数据
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:filePath];

3、Preference偏好设置
偏好设置的使用非常方便快捷,我们一般使用它来进行一些设置的记录,比如用户名,开关是否打开等设置。 Preference是通过NSUserDefaults来使用的,是通过键值对的方式记录设置。
4、NSKeyedArchiver归档 / NSKeyedUnarchiver解档
5、SQLite3 需要熟悉sql语句,应用比较少,会用三方工具
6、FMDB

五、第三方框架原理

1、AFN:
答:
答:
AFNetworking是封装的NSURLSession的网络请求,由五个模块组成:分别由NSURLSession,Security,Reachability,Serialization,UIKit五部分组成

NSURLSession:网络通信模块(核心模块) 对应 AFNetworking中的 AFURLSessionManager和对HTTP协议进行特化处理的AFHTTPSessionManager,AFHTTPSessionManager是继承于AFURLSessionmanager的

Security:网络通讯安全策略模块 对应 AFSecurityPolicy

Reachability:网络状态监听模块 对应AFNetworkReachabilityManager

Seriaalization:网络通信信息序列化、反序列化模块 对应 AFURLResponseSerialization

UIKit:对于iOS UIKit的扩展库

2、SDWebImage
答:
0、首先显示占位图

1、在webimagecache中寻找图片对应的缓存,它是以url为数据索引先在内存中查找是否有缓存;

2、如果没有缓存,就通过md5处理过的key来在磁盘中查找对应的数据,如果找到就会把磁盘中的数据加到内存中,并显示出来;

3、如果内存和磁盘中都没有找到,就会向远程服务器发送请求,开始下载图片;

4、下载完的图片加入缓存中,并写入到磁盘中;

5、整个获取图片的过程是在子线程中进行,在主线程中显示。

六、应用瘦身:

上一篇下一篇

猜你喜欢

热点阅读