iOS面试基础题型解析

作者:达内 更新时间:2014-06-17 12:05 来源:未知 点击:
想必一定有很多学员在学习iOS开发技术的同时,也在关注iOS的面试题一般都涵盖了哪些知识范围,现在达内的金牌讲师就为大家阐述一下常考题型。
想必一定有很多学员在学习iOS开发技术的同时,也在关注iOS的面试题一般都涵盖了哪些知识范围,现在达内的金牌讲师就为大家阐述一下常考题型。

< span style="text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 12px Arial, Verdana, sans-serif; white-space: normal; float: none; letter-spacing: normal; color: rgb(34,34,34); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">1.怎么理解MVC,在Cocoa中MVC是怎么实现的?
< span style="text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 12px Arial, Verdana, sans-serif; white-space: normal; float: none; letter-spacing: normal; color: rgb(34,34,34); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">   MVC设计模式考虑三种对象:模型对象、视图对象、和控制器对象。模型对象代表特别的知识和专业技能,它们负责保有应用程序的数据和定义操作数据的逻辑。视图对象知道如何显示应用程序的模型数据,而且可能允许用户对其进行编辑。控制器对象是应用程序的视图对象和模型对象之间的协调者。

< span style="text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 12px Arial, Verdana, sans-serif; white-space: normal; float: none; letter-spacing: normal; color: rgb(34,34,34); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">2. KVC和KVO区别,分别在什么情况下使用?
< span style="text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 12px Arial, Verdana, sans-serif; white-space: normal; float: none; letter-spacing: normal; color: rgb(34,34,34); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">   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方法从对象中请求值时,对象能够在错误发生前,有最后的机会响应这个请求。
< span style="text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 12px Arial, Verdana, sans-serif; white-space: normal; float: none; letter-spacing: normal; color: rgb(34,34,34); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">id、nil代表什么?
< span style="text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 12px Arial, Verdana, sans-serif; white-space: normal; float: none; letter-spacing: normal; color: rgb(34,34,34); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">   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对象,这个对象的指针指向空(没有东西就是空)。
< span style="text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 12px Arial, Verdana, sans-serif; white-space: normal; float: none; letter-spacing: normal; color: rgb(34,34,34); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">  内存管理 Autorelease、retain、copy、assign的set方法和含义?
< span style="text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 12px Arial, Verdana, sans-serif; white-space: normal; float: none; letter-spacing: normal; color: rgb(34,34,34); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">  1,你初始化(alloc/init)的对象,你需要释放(release)它。例如:   NSMutableArray aArray = [[NSArray alloc] init];    后,需要    [aArray release];
< span style="text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 12px Arial, Verdana, sans-serif; white-space: normal; float: none; letter-spacing: normal; color: rgb(34,34,34); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">   2,你retain或copy的,你需要释放它。例如:   [aArray retain]   后,需要    [aArray release];
< span style="text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 12px Arial, Verdana, sans-serif; white-space: normal; float: none; letter-spacing: normal; color: rgb(34,34,34); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">    3,被传递(assign)的对象,你需要斟酌的retain和release。例如:   obj2 = [[obj1 someMethod] autorelease];   对象2接收对象1的一个自动释放的值,或传递一个基本数据类型(NSInteger,NSString)时: 你或希望将对象2进行retain,以防止它在被使用之前就被自动释放掉。但是在retain后,一定要在适当的时候进行释放。
< span style="text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 12px Arial, Verdana, sans-serif; white-space: normal; float: none; letter-spacing: normal; color: rgb(34,34,34); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"> 5. 简述索引计数(Reference Counting)    retain值 = 索引计数(Reference Counting)    NSArray对象会retain(retain值加一)任何数组中的对象。当NSArray被卸载(dealloc)的时候,所有数组中的对象会被执行一次释放(retain值减一)。不仅仅是NSArray,任何收集类(Collection Classes)都执行类似操作。例如NSDictionary,甚至UINavigationController。   Alloc/init建立的对象,索引计数为1。无需将其再次retain。
< span style="text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 12px Arial, Verdana, sans-serif; white-space: normal; float: none; letter-spacing: normal; color: rgb(34,34,34); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">    [NSArray array]和[NSDate date]等“方法”建立一个索引计数为1的对象,但是也是一个自动释放对象。所以是本地临时对象,那么无所谓了。如果是打算在全Class中使用的变量(iVar),则必须retain它。    缺省的类方法返回值都被执行了“自动释放”方法。(*如上中的NSArray)
< span style="text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 12px Arial, Verdana, sans-serif; white-space: normal; float: none; letter-spacing: normal; color: rgb(34,34,34); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">  在类中的卸载方法“dealloc”中,release所有未被平衡的NS对象。(*所有未被autorelease,而retain值为1的)。
< span style="text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 12px Arial, Verdana, sans-serif; white-space: normal; float: none; letter-spacing: normal; color: rgb(34,34,34); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">  希望以上的问题,将你的疑惑点一扫而清,在iOS培训的道路上再接再厉吧!
标签:
  • 上一篇:没有了
  • 下一篇:哪些是iOS开发面试常见题型?
  • 相关阅读

    最新开班信息

    3G-IOS软件工程师就业班
    北京潘家园中心 开课日期:9月29日
    3G-IOS软件工程师就业班
    北京潘家园中心 开课日期:9月29日
    3G-IOS软件工程师周末班
    北京潘家园中心 开课日期:9月29日
    3G-IOS软件工程师周末班
    北京潘家园中心 开课日期:9月29日