IOS面试题

来源:互联网 发布:apache http服务器 编辑:程序博客网 时间:2024/06/18 09:40

总结了一些面试题   给大家分享一下  持续更新。。。

MVC模式的理解

 MVC设计模式考虑三种对象:模型对象、视图对象、和控制器对象。模型对象代 表特别的知识和专业技能,它们负责保有应用程序的数据和定义操作数据的逻辑。 视图对象知道如何显示应用程序的模型数据,而且可能允许用户对其进行编辑。控 制器对象是应用程序的视图对象和模型对象之间的协调者。

线程与进程的区别和联系? 

进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实 现系统对应用的并发性。 程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址 空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个 进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地 址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序 健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行 并且又要共享某些变量的并发操作,只能用线程,不能用进程。

readwrite,readonly,assign,retain,copy,nonatomic属性的作用

 @property是一个属性访问声明,扩号内支持以下几个属性: 

1,getter=getterName,setter=setterName,设置setter与getter的方法名 

2,readwrite,readonly,设置可供访问级别

 2,assign,setter方法直接赋值,不进行任何retain操作,为了解决原类型与环循引 用问题 

3,retain,setter方法对参数进行release旧值再retain新值,所有实现都是这个顺序 (CC上有相关资料) 

4,copy,setter方法进行Copy操作,与retain处理流程一样,先旧值release,再Copy 出新的对象,retainCount为1。这是为了减少对上下文的依赖而引入的机制。

 5,nonatomic,非原子性访问,不加同步,多线程并发访问会提高性能。注意,如 果不加此属性,则默认是两个访问方法都为原子型事务访问。锁被加到所属对象实 例级(我是这么理解的...)。 @synthesize xxx; 来实现实际代码 

7.obj-c有多重继承么?不是的话有什么替代方法? 

cocoa 中所有的类都是NSObject 的子类 多继承在这里是用protocol 委托代理 来实现的 ood的多态特性 在 obj-c 中通过委托来实现. 

 1.ObjC中,与alloc语义相反的方法是dealloc还是release?与retain语义相反的方法是 dealloc还是release,为什么?需要与alloc配对使用的方法是dealloc还是release,为 什么?

答:alloc与dealloc语意相反,alloc是创建变量,dealloc是释放变量。 retain 对应release,retain 保留一个对象。调用之后,变量的计数加1。

为什么很多内置类如UITableViewController的delegate属性都是assign而不是retain 的?

答:会引起循环引用。

 什么是Category? 有什么优缺点? 

类目 :为现有类添加新方法的方式 优点可以不知道源代码的情况下给这个类添加新方法 缺点是 有可能重写的这个方法我却不知道 

 MVC的优点

 ◆低耦合性。视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码, 同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视 图相分离,所以很容易改变应用程序的数据层和业务规则。

 ◆高重用性和可适用性。

◆较低的生命周期成本。MVC使降低开发和维护用户接品的技术含量成为可能。

 ◆快速的部署。使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精 力于业务逻辑,界面程序员(HTML和JSP开发人员)集中业务于表现形式上。

 ◆可维护性。分熟视图层和业务逻辑层也使得WEB应用更易于维护和修改。

 ◆有利于软件工程化管理。

0 0