面试题总结
2016-06-30 本文已影响21人
凌啸寒
1.单例设计模式的实现,为什么使用单例模式?? static MusicManager *manager=nil;
@implementation MusicManager
//获取单例的方法
+(MusicManager*)defaultManager
{
//只调用一次,保证线程安全
static dispa tch_once_t onceToken
dispatch_once(&onceToken,^{
if(manager == nil){
manager = [[MusicManager alloc]init];
}
});
return manager;
}
为什么使用单例设计??
1.单例设计是用来限制一个类只能创建一个对象,那么此对象中的属性可以存储全局共享的数据,所有的类都可以访问,设置此单例对象中的属性数据。2.如果一个类创建的时候非常消耗性能,那么此类可以设置为单例节约性能,只要能够满足需求。
2.CALayer层和UIView的区别是什么???
两者最大的区别是,图层不会直接渲染到屏幕上,UIView是iOS系统中界面元素的基础,所有的界面元素都是继承于它。它本身是有CoreAnimation来实现的,它真正的绘图部分,是由一个CALayer类来管理的。而UIView就像是CALayer的管理器,一个UIView上可以有多个CALayer,每个都可以显示一种东西,从而增强UIView的展现能力。
3.设计模式:
MVC,单例,工厂,KVO,策略
MVC是一种架构设计,M表示数据模型,V表示视图,C表示控制器
1>数据模型:负责存储,定义,操作数据
2>视图:用来展示数据给用户,和用户进行操作交互
3>控制器是M和V的协调者,控制器获取数据,将数据交给视图去展示
4.数据持久化存储的方式:
plist,归档,NSUserdefaults,数据库(FMDB,CoreData)
5.UITableView的复用机制:
6.系统创建多线程的方式:
GCD,NSOperation,NSThread
7.OC中继承和类别的区别:
继承是继承父类的方法,子类拥有父类的属性或者方法,类别是为某个类添加一些新的方法,优先使用自己的方法。
8.KVO和KVC的区别:
9.响应者链:
响应者链表示一系列的响应者对象,事件被交由第一响应者对象处理,如果第一响应者不处理,时间被沿着响应者莲向上传递,交给下一个响应者,一般来说,第一响应者是个视图对象或者其子类对象,当其被触摸后时间呗交由它处理,如果它不处理,事件就会被传递给它的视图控制器对象,若存在,就是它的父视图对象,若还存在,直到顶层视图。接下来会沿着顶层视图到窗口,再到程序,如果整个过程都没有响应这个事件,改事件就会被丢弃。