美文网首页
iOS面试题

iOS面试题

作者: a2bfbb8a095f | 来源:发表于2020-05-20 10:06 被阅读0次

    简述沙盒机制是什么

    • 1.每一个应用程序都有一个属于自己的沙盒目录
    • 2.只能访问自己的沙盒目录
    • 3.不能访问其他应用程序的目录

    获取沙盒目录路径

    NSString* sandBoxPath = NSHomeDirectory();
    NSLog(@"sanBoxPath = %@", sandBoxPath);
    

    //sanBoxPath = /Users/vijay/Library/Developer/CoreSimulator/Devices/8FE0176D-D626-4C92-A534-0FC41627A416/data/Containers/Data/Application/2803A31F-A9B3-4191-A740-EFB4FD374DBF

    1.png

    沙盒目录(4个):

    Documents 存储配置信息 开机动画 背景音乐 plist文件 图片

    Library 存储用户缓存、下载数据等(如果存放在Documents中,苹果不让上架审核通过)

    tmp 存储临时数据 (APP退出时,会清空tmp数据, Documents/Library目录数据则会本地化存储持久化,不会清空)

    SystemData 存储系统数据

    strong copy关键字的区别

    strong/retain copy 实际上是浅复制和深复制的区别(strong ARC下面的关键字 retain是MRC)

    strong 强引用一个对象,需要持有它所指向对象的所有权

    strong/retain 属于浅复制,引用一次,增加一次引用计数retainCount 可变的NSMutableString NSMutableArray NSMutableDictionary 一般用strong修饰(人的影子)

    copy 属于深复制:不可变的NSString NSArray NSDictionary的父类引用(指针)指向子类对象,一般用copy关键字修饰(克隆人)

    3.png

    解决tableView的卡顿问题

    问题:TableView卡顿一般是由于加载大量的网络图片资源时,引起的。每加载一行,都需要去从网络上读取这张图片,每一个cell的出现都需要网络上请求的这么一个状态,所以会出现卡顿的问题。

    解决方法:网络图片的加载,做成异步请求即可。第三方网络图片异步加载库SDWebImage

    问题:tableView加载的数据很大,每一行cell的高度不统一,高度需要通过临时加载的数据来计算
    解决方法:优先计算出请求所有行的高度,做成一个数组,Cell表格加载行高时,通过数组来绘制每一行的行高。
    -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 1.0f;
    } //加载数据表格每一行数据之前,优先调用的

    利用Socket建立网络连接的步骤

    Socket是网络通讯的基石

    Socket的两种协议

    TCP 一对一,类似打电话
    
    UDP 一对多,类似发短信
    

    Http是建立在Socket TCP络通讯协议

    每一对套接字分为服务端和客户端

    1. 服务器监听 循环监听 等待状态,无需指定

    2. 客户端请求,指定连接的服务器(IP sort端口)

    3. 连接确认(服务端确认 客户端确认 服务端再次确认 三次握手)

    服务器开启一个新的线程,接收客户端的请求,处理并返回服务端的数据

    建立网络连接 三次握手

    断开网络连接 四次挥手

    相关文章

      网友评论

          本文标题:iOS面试题

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