iOS面试题集锦
1、 get和post的区别
a.安全性问题:get请求的参数全部暴露在接口中,一般叫做明文请求或者傻瓜式请求,post请求的参数一般是以字典的方式进行拼接,相对于get请求而言比较安全
b.对文件大小的要求:get请求不允许向服务器上传文件(图片,pdf,音视频)
c.如果从服务器获取数据或者查询数据使用get请求,如果上传数据到服务器或者修改服务器上的数据使用post请求
2、SDWebImage
用途:用来加载网络图片的第三方库,实现了异步请求数据,并且实现了图片的缓存
实现原理:在内存和沙盒目录下(library/cache)各缓存一份文件,内存中的文件到一定程度会自动清除,沙盒目录下的文件需要由用户手动清除,首先检测内存(内存中无数据)->检测沙盒目录(无数据)->再发送网络请求获取数据
3、iOS7.8.9的PCH文件设置的区别
PCH文件的作用就相当于Swift中的Swift File,写在这里的头文件或者定义的变量可以全局访问到
a、iOS7中PCH文件默认时创建好的,直接使用就可以
b、iOS8中PCH文件需要自己创建(iOS-other-pch.file),并且需要设置文件PCH路径(target-Build settings ->"输入prefix" - 找到prefix.Header设置路径)
c、iOS9中PCH文件的创建以及路径设置和iOS8中一样,但是需要在PCH文件中添加一个标记(#ifndef __OBJC__ #endif)
4、类方法和实例方法的区别
a、定义区别:类方法定义时用 static 关键字修饰;
b、调用:类方法用类型点方法直接调用;实例方法用类型对象点方法调用;
c、是否能相互调用:
在类中绝对不能调用实例方法-实例方法必须有对象(实例),然后实例.方法名;
类方法只能调用类方法,实例方法可以调用实例方法和类方法
5、tableView的优化
1.复用问题
2.尽量避免使用动画
3.在图片数量多的情况下,使用异步加载,并且做缓存
4.自定义cell的时候直接绘制drawRect方法(几乎没人用)