面试题总结

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.响应者链:

     响应者链表示一系列的响应者对象,事件被交由第一响应者对象处理,如果第一响应者不处理,时间被沿着响应者莲向上传递,交给下一个响应者,一般来说,第一响应者是个视图对象或者其子类对象,当其被触摸后时间呗交由它处理,如果它不处理,事件就会被传递给它的视图控制器对象,若存在,就是它的父视图对象,若还存在,直到顶层视图。接下来会沿着顶层视图到窗口,再到程序,如果整个过程都没有响应这个事件,改事件就会被丢弃。

10.UItableView的优化:

你可能感兴趣的:(面试题总结)