IOS总结(五)
2016-09-16 本文已影响102人
梦醒繁华
1.为什么很多内置类如UITableViewControl的delegate属性都是assign而不是retain?
答:防止循环引用
如:对象A引用了对象B,对象B引用了对象C,对象C引用了对象B,这个时候B的引用计数是2,而C的引用计数是1,当A不再使用B的时候,就释放了B的所有权,这个时候C还引用对象B,所以B不会释放,引用计数为1,因为B也引用着对象C,B不释放,那么C也就不会被释放,所以他们的引用计数都为1,并且永远不会被释放,形成了循环引用.
2.UIImage初始化一张图片有几种方法?简述其特点?
答:3种,
- imageNamed:系统会先检查系统缓存中是否有该名字的image,如果有的话,则直接返回,如果没有,则先加载图像到缓存,然后再返回.
- initWithContentsOfFile:系统不会检查缓存,而直接从文件系统中记载并返回.
- imageWithCGImage:scale:orientation
当scale= 1的时候图像为原始大小,orientation指定绘制图像的方向.
3.简述对UIView.UIWindow和CALayer的理解.
答:
- UIWindow是应用的窗口,继承于UIResponder.
- UIView继承于UIView,是创建窗口中的一个视图,可以响应交互事件.一个程序只有一个主window,可以有多个window.
- CALayer图层,一个view可有多个图层,不可以响应事件.
4.分析json.xml的区别,底层如何实现?
- Json:键值对.数据小,不复杂.便于解析,有框架支持,适合轻量级传输.作为数据包个数传输的时候效率更高.
- xml:标签套内容.xml数据两较大,比较复杂.适合大数据量的传输.xml有丰富的编码工具,比如:Dom4j,JDom.解析方式有两种,一是通过文芳模型解析,另外一种遍历节点.
5.面向对象的三大特征,简单介绍。
- 封装:代码模块化,方便以后调用.
- 继承:子类继承父类的所有方法和属性.
- 多态:父类指针指向子类对象.
6.简述NotificationCenter.KVC,KVO,Delegate?并说明它们之间的区别?
- NotificationCenter:消息中心.消息通知.
- KVC:利用键-值间接访问类中的某个属性.
[self setValue:@"123"
forKeyPath:@"name"];
NSLog(@"%@",[self valueForKeyPath:@"name"]);
- KVO:利用键-路径间接访问类中的某个属性,也就是观察者模式(KVO+通知中心).基于KVC和通知中心,观察的是实例变量.
- Delegate:用于多个类之间的传值.
7.对MVC的理解,好处?
MVC:是一种架构,即model+view+controller。
model:数据处理,view:视图显示,controller:逻辑控制,负责视图和模型之间的通信。
好处:高类聚,低耦合,提高代码的复用性。
8.oc中对象的交互式如何实现的?
答:消息机制
9.介绍XMPP
基于XML的点对点通讯协议,实现通讯功能。
优点:可以跨平台开发
缺点:丢包,只能发文字(图片发送发的是链接)。
10.NSArray 和NSMutableArray 的区别?多线程下那个更安全.
答:NSArray:不可变数组。
NSMutableArray:可变数组。
多线程下NSArray更安全。
11.以.mm为扩展名的文件里,可以包含哪些代码?
答:c,c++,oc