重庆达内IT培训
美国上市IT培训机构

400-111-8989

iOS面试基础题型解析

  • 时间:2015-12-24 15:36
  • 发布:达内
  • 来源:达内培训

想必一定有很多学员在学习iOS开发技术的同时,也在关注iOS的面试题一般都涵盖了哪些知识范围,现在达内的金牌讲师就为大家阐述一下常考题型。

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

2. KVC和KVO区别,分别在什么情况下使用?
  KVC(Key-Value-Coding)  KVO(Key-Value-Observing)  理解KVC与KVO(键-值-编码与键-值-监看)  当通过KVC调用对象时,比如:[self valueForKey:@”someKey”]时,程序会自动试图通过几种不同的方式解析这个调用。首先查找对象是否带有 someKey 这个方法,如果没找到,会继续查找对象是否带有someKey这个实例变量(iVar),如果还没有找到,程序会继续试图调用 -(id) valueForUndefinedKey:这个方法。如果这个方法还是没有被实现的话,程序会抛出一个NSUndefinedKeyException 异常错误。 (Key-Value Coding查找方法的时候,不仅仅会查找someKey这个方法,还会查找getsomeKey这个方法,前面加一个get,或者_someKey以及 _getsomeKey这几种形式。同时,查找实例变量的时候也会不仅仅查找someKey这个变量,也会查找_someKey这个变量是否存在。) 设计valueForUndefinedKey:方法的主要目的是当你使用-(id)valueForKey方法从对象中请求值时,对象能够在错误发生 前,有最后的机会响应这个请求。
id、nil代表什么?
  id  id和void *并非完全一样。在上面的代码中,id是指向struct objc_object的一个指针,这个意思基本上是说,id是一个指向任何一个继承了Object(或者NSObject)类的对象。需要注意的是id 是一个指针,所以你在使用id的时候不需要加星号。比如id foo=nil定义了一个nil指针,这个指针指向NSObject的一个任意子类。而id *foo=nil则定义了一个指针,这个指针指向另一个指针,被指向的这个指针指向NSObject的一个子类。   nil  nil和C语言的NULL相同,在objc/objc.h中定义。nil表示一个Objctive-C对象,这个对象的指针指向空(没有东西就是空)。
  内存管理 Autorelease、retain、copy、assign的set方法和含义?
   1,你初始化(alloc/init)的对象,你需要释放(release)它。例如:   NSMutableArray aArray = [[NSArray alloc] init];    后,需要    [aArray release];
   2,你retain或copy的,你需要释放它。例如:   [aArray retain]   后,需要    [aArray release];
   3,被传递(assign)的对象,你需要斟酌的retain和release。例如:   obj2 = [[obj1 someMethod] autorelease];   对象2接收对象1的一个自动释放的值,或传递一个基本数据类型(NSInteger,NSString)时: 你或希望将对象2进行retain,以防止它在被使用之前就被自动释放掉。但是在retain后,一定要在适当的时候进行释放。
   5. 简述索引计数(Reference Counting)    retain值 = 索引计数(Reference Counting)    NSArray对象会retain(retain值加一)任何数组中的对象。当NSArray被卸载(dealloc)的时候,所有数组中的对象会被执行 一次释放(retain值减一)。不仅仅是NSArray,任何收集类(Collection Classes)都执行类似操作。例如NSDictionary,甚至UINavigationController。   Alloc/init建立的对象,索引计数为1。无需将其再次retain。
   [NSArray array]和[NSDate date]等“方法”建立一个索引计数为1的对象,但是也是一个自动释放对象。所以是本地临时对象,那么无所谓了。如果是打算在全Class中使用的变量 (iVar),则必须retain它。    缺省的类方法返回值都被执行了“自动释放”方法。(*如上中的NSArray)
  在类中的卸载方法“dealloc”中,release所有未被平衡的NS对象。(*所有未被autorelease,而retain值为1的)。
上一篇:ios面试必问的5个问题
下一篇:2015会计从业考前冲刺四大法宝

马上预约七天免费体验课

姓名:

电话:

现在及未来最赚钱又稳定的岗位分别是哪些?

java新手学习中,5个有用的程序片段(赶紧收藏)

致IT新人的5大建议

程序员,你凭什么工资那么高?

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

  • 搜索抖音号

    搜索抖音号:1821685962

    免费领取达内课程视频学习资料

Copyright © 2021 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
江西省

贵州省

广西省

海南省