ios面试题锦集带答案.docx
《ios面试题锦集带答案.docx》由会员分享,可在线阅读,更多相关《ios面试题锦集带答案.docx(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、ios面试题锦集带答案iOS 面试题锦集1.Difference between shallow copy and deep copy浅复制和深复制的区分?答案:浅层复制:只复制指向对象的指针,而不复制引用对象本身。深层复制:复制引用对象本身。意思就是说我有个A对象,复制一份后得到A_copy对象后,对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只不过是是一个指针,对象本身资源还是只有一份,那假设我们对A_copy执行了修改操作,那么觉察A引用的对象同样被修改,这其实违反了我们复制拷贝的一个思想。深复制就好理解了,内存中存在了两份独立对象本身。用网上一哥们通俗的话将就是:浅复制
2、好比你和你的影子,你完蛋,你的影子也完蛋深复制好比你和你的克隆人,你完蛋,你的克隆人还活着。2.What is advantage of categories What is difference between implementing a category and inheritance类别的作用?继承和类别在实现中有何区分?答案:category 可以在不得悉,不变更原来代码的状况下往里面添加新的方法,只能添加,不能删除修改。并且假设类别和原来类中的方法产生名称冲突,则类别将覆盖原来的方法,因为类别具有更高的优先级。类别主要有3个作用:(1)将类的实现分散到多个不同文件或多个不同框架中。
3、(2)创立对私有方法的前向引用。(3)向对象添加非正式协议。继承可以增加,修改或者删除方法,并且可以增加属性。3.Difference between categories and extensions类别和类扩展的区分。答案:category和extensions的不同在于 后者可以添加属性。另外后者添加的方法是必需要实现的。extensions可以认为是一个私有的Category。4.Difference between protocol in objective c and interfaces in javaobc中的协议和java中的接口概念有何不同?答案:OBC中的代理有2层含义,
4、官方定义为 formal和informal protocol。前者和Java接口一样。informal protocol中的方法属于设计形式考虑范畴,不是必需实现的,但是假设有实现,就会变更类的属性。其实关于正式协议,类别和非正式协议我很早前学习的时候大致看过,也写在了学习教程里“非正式协议概念其实就是类别的另一种表达方式“这里有一些你可能渴望实现的方法,你可以运用他们更好的完成工作”。这个意思是,这些是可选的。比方我门要一个更好的方法,我们就会申明一个这样的类别去实现。然后你在后期可以干脆运用这些更好的方法。这么看,总觉得类别这玩意儿有点像协议的可选协议。如今来看,其实protocal已经开
5、场对两者都统一和标准起来操作,因为资料中说“非正式协议运用interface修饰“,如今我们看到协议中两个修饰词:“必需实现(requied)”和“可选实现(optional)”。5.What are KVO and KVC答案:kvc:键 - 值编码是一种间接访问对象的属性运用字符串来标识属性,而不是通过调用存取方法,干脆或通过实例变量访问的机制。很多状况下可以简化程序代码。apple文档其实给了一个很好的例子。kvo:键值视察机制,他供应了视察某一属性变更的方法,极大的简化了代码。详细用看到嗯哼用到过的一个地方是对于按钮点击变更状态的的监控。比方我自定义的一个buttoncppself a
6、ddObserver:self forKeyPath:highlighted options:0 context:nil;#pragma mark KVO- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context if (keyPath isEqualToString:highlighted ) self setNeedsDisplay; 对于系统是依据keypath去取的到相应的值发生变更,理论上来说是和
7、kvc机制的道理是一样的。对于kvc机制如何通过key找寻到value:“当通过KVC调用对象时,比方:self valueForKey:”someKey”时,程序会自动试图通过几种不同的方式解析这个调用。首先查找对象是否带有 someKey 这个方法,假设没找到,会接着查找对象是否带有someKey这个实例变量(iVar),假设还没有找到,程序会接着试图调用 -(id) valueForUndefinedKey:这个方法。假设这个方法还是没有被实现的话,程序会抛出一个NSUndefinedKeyException异样错误。(cocoachina 注:Key-Value Coding查找方法的
8、时候,不仅仅会查找someKey这个方法,还会查找getsomeKey这个方法,前面加一个get,或者_someKey以和_getsomeKey这几种形式。同时,查找实例变量的时候也会不仅仅查找someKey这个变量,也会查找_someKey这个变量是否存在。)设计valueForUndefinedKey:方法的主要目的是当你运用-(id)valueForKey方法从对象中恳求值时,对象可以在错误发生前,有最终的时机响应这个恳求。这样做有很多好处,下面的两个例子说明了这样做的好处。“来至cocoa,这个说法应当挺有道理。因为我们知道button却是存在一个highlighted实例变量.因此为
9、何上面我们只是add一个相关的keypath就行了,可以依据kvc查找的逻辑理解,就说的过去了。6.What is purpose of delegates代理的作用?答案:代理的目的是变更或传递限制链。允许一个类在某些特定时刻通知到其他类,而不需要获得到那些类的指针。可以削减框架困难度。另外一点,代理可以理解为java中的回调监听机制的一种类似。7.What are mutable and immutable types in Objective Cobc中可修改和不行以修改类型。答案:可修改不行修改的集合类。这个我个人简洁理解就是可动态添加修改和不行动态添加修改一样。比方NSArray和N
10、SMutableArray。前者在初始化后的内存控件就是固定不行变的,后者可以添加等,可以动态申请新的内存空间。8.When we call objective c is runtime language what does it mean我们说的obc是动态运行时语言是什么意思?答案:多态。 主要是将数据类型确实定由编译时,推延到了运行时。这个问题其实浅涉和到两个概念,运行时和多态。简洁来说,运行时机制使我们直到运行时才去确定一个对象的类别,以和调用该类别对象指定方法。多态:不同对象以自己的方式响应一样的消息的实力叫做多态。意思就是假设生物类(life)都用有一个一样的方法-eat;那人类属
11、于生物,猪也属于生物,都继承了life后,实现各自的eat,但是调用是我们只需调用各自的eat方法。也就是不同的对象以自己的方式响应了一样的消息(响应了eat这个选择器)。因此也可以说,运行时机制是多态的根底?9.what is difference between NSNotification and protocol通知和协议的不同之处?答案:协议有限制链(has-a)的关系,通知没有。首先我一开场也不太明白,什么叫限制链(专业术语了)。但是简洁分析下通知和代理的行为形式,我们大致可以有自己的理解简洁来说,通知的话,它可以一对多,一条消息可以发送给多个消息承受者。代理按我们的理解,到不是干
12、脆说不能一对多,比方我们知道的明星经济代理人,很多时候一个经济人负责好几个明星的事务。只是对于不同明星间,代理的事物对象都是不一样的,一一对应,不行能说明天要处理A明星要一个发布会,代理人发出处理发布会的消息后,别称B的发布会了。但是通知就不一样,他只关切发出通知,而不关切多少接收到感爱好要处理。因此限制链(has-a从英语单词大致可以看出,单一拥有和可限制的对应关系。10.What is push notification什么是推送消息?11.Polymorphism?关于多态性答案:多态,子类指针可以赋值给父类。这个题目其实可以出到一切面对对象语言中,因此关于多态,继承和封装根本最好都有个
13、自我意识的理解,也并非确定要把书上资料上写的能背出来。最重要的是转化成自我理解。12.Singleton对于单例的理解答案:11,12题目其实出的有点泛泛的感觉了,可能说是编程语言需要或是必备的根底。根本能用熟识的语言写出一个单例,以和可以运用到的场景或是你编程中遇到过运用的此种形式的框架类等。进一步点,考虑下如何在多线程访问单例时的平安性。13.What is responder chain说说响应链答案: 事务响应链。包括点击事务,画面刷新事务等。在视图栈内从上至下,或者从下之上传播。可以说点事务的分发,传递以和处理。详细可以去看下touch事务这块。因为问的太抽象化了严峻疑心题目出到越后
14、面就越笼统。14.Difference between frame and boundsframe和bounds有什么不同?答案:frame指的是:该view在父view坐标系统中的位置和大小。(参照点是父亲的坐标系统)bounds指的是:该view在本身坐标系统中 的位置和大小。(参照点是本身坐标系统)15.Difference between method and selector方法和选择器有何不同?答案:selector是一个方法的名字,method是一个组合体,包含了名字和实现.详情可以看apple文档。16.Is there any garbage collection mecha
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ios 试题 锦集带 答案
限制150内