简述沙盒机制是什么
- 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关键字修饰(克隆人)
解决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络通讯协议
每一对套接字分为服务端和客户端
-
服务器监听 循环监听 等待状态,无需指定
-
客户端请求,指定连接的服务器(IP sort端口)
-
连接确认(服务端确认 客户端确认 服务端再次确认 三次握手)
服务器开启一个新的线程,接收客户端的请求,处理并返回服务端的数据
建立网络连接 三次握手
断开网络连接 四次挥手
网友评论