方法ios面试题1

ios 6 1 3 越狱  时间:2021-01-21  阅读:()

1.Difference between shallow copy and deep copy?浅复制和深复制的区别

答案浅层复制只复制指向对象的指针而不复制引用对象本身。

深层复制复制引用对象本身。 意思就是说我有个A对象复制一份后得到A_copy对象后对于浅复制来说 A和A_copy指向的是同一个内存资源复制的只不过是是一个指针对象本身资源还是只有一份那如果我们对A_copy执行了修改操作,那么发现A引用的对象同样被修改这其实违背了我们复制拷贝的一个思想。深复制就好理解了,内存中存在了两份独立对象本身。 用网上一哥们通俗的话将就是 浅复制好比你和你的影子你完蛋你的影子也完蛋深复制好比你和你的克隆人你完蛋你的克隆人还活着。

2.What is advantage of categories?What is difference betweenimplementing a category and inheritance?类别的作用继承和类别在实现中有何区别

答案 category可以在不获悉不改变原来代码的情况下往里面添加新的方法只能添加不能删除修改。 并且如果类别和原来类中的方法产生名称冲突则类别将覆盖原来的方法因为类别具有更高的优先级。 类别主要有3个作用 (1)将类的实现分散到多个不同文件或多个不同框架中。 (2)创建对私有方法的前向引用。 (3)向对象添加非正式协议。 继承可以增加修改或者删除方法并且可以增加属性。

3.Difference between categories and extensions?类别和类扩展的区别。

答案 category和extensions的不同在于后者可以添加属性。另外后者添加的方法是必须要实现的。 extensions可以认为是一个私有的Category。

4.Difference between protocol in objective c and interfaces injava? obc中的协议和java中的接口概念有何不同

答案 OBC中的代理有2层含义官方定义为formal和inf ormalprotocol。前者和Java接口一样。 informal protocol中的方法属于设计模式考虑范畴不是必须实现的但是如果有实现就会改变类的属性。 其实关于正式协议类别和非正式协议我很早前学习的时候大致看过也写在了学习教程里 “非正式协议概念其实就是类别的另一种表达方式“这里有一些你可能希望实现的方法你可以使用他们更好的完成工作” 。 这个意思是这些是可选的。 比如我门要一个更好的方法我们就会申明一个这样的类别去实现。然后你在后期可以直接使用这些更好的方法。 这么看总觉得类别这玩意儿有点像协议的可选协议。 "现在来看其实protocal已经开始对两者都统一和规范起来操作因为资料中说“非正式协议使用interface修饰“ 现在我们看到协议中两个修饰词 “必须实现(@requied) ”和“可选实现(@optional)” 。

5.What are KVO and KVC?

答案 kvc:键-值编码是一种间接访问对象的属性使用字符串来标识属性而不是通过调用存取方法直接或通过实例变量访问的机制。

很多情况下可以简化程序代码。 ap p l e文档其实给了一个很好的例子。 kvo:键值观察机制他提供了观察某一属性变化的方法极大的简化了代码。 具体用看到嗯哼用到过的一个地方是对于按钮点击变化状态的的监控。 比如我自定义的一个button [cpp] [selfaddObserver:self forKeyPath: @"highlighted" options: 0context: ni l] ; #pragma mark KVO -

(void)observeValueForKeyPath: (NSString *)keyPath ofObject:(id)object change: (NSDictionary *)change context: (void

*)context { if ( [keyPathisEqualToString: @"highlighted"] ) { [selfsetNeedsDisplay] ; } }

对于系统是根据keypath去取的到相应的值发生改变理论上来说是和kvc机制的道理是一样的。 对于kvc机制如何通过key寻找到value “当通过KVC调用对象时 比如 [self valueForKey: @”someKey” ]时程序会自动试图通过几种不同的方式解析这个调用。首先查找对象是否带有someKey这个方法如果没找到会继续查找对象是否带有someKey这个实例变量iVar 如果还没有找到程序会继续试图调用-(id) valueForUndef inedKey:这个方法。如果

这个方法还是没有被实现的话程序会抛出一个

NSUndef inedKeyException异常错误。 (cocoachina.com注Key-Value Coding查找方法的时候不仅仅会查找someKey这个方法还会查找getsomeKey这个方法前面加一个get或者_someKey以及_getsomeKey这几种形式。同时查找实例变量的时候也会不仅仅查找someKey这个变量也会查找_someKey这个变量是否存在。 

设计valueForUndefinedKey:方法的主要目的是当你使用

-(id)valueForKey方法从对象中请求值时对象能够在错误发生前有最后的机会响应这个请求。这样做有很多好处下面的两个例子说明了这样做的好处。 “来至cocoa这个说法应该挺有道理。 因为我们知道button却是存在一个highlighted实例变量.因此为何上面我们只是add一个相关的keypath就行了 可以按照kvc查找的逻辑理解就说的过去了。

6.What is purpose of delegates?代理的作用

答案代理的目的是改变或传递控制链。允许一个类在某些特定时刻通知到其他类而不需要获取到那些类的指针。可以减少框架复杂度。

另外一点代理可以理解为j ava中的回调监听机制的一种类似。

7.What are mutable and immutable types in Objective C? obc中可修改和不可以修改类型。

答案可修改不可修改的集合类。这个我个人简单理解就是可动态添

加修改和不可动态添加修改一样。 比如NSArray和NSMutab l eArray。前者在初始化后的内存控件就是固定不可变的后者可以添加等可以动态申请新的内存空间。

8.When we call objective c is runtime language what does it mean?

我们说的obc是动态运行时语言是什么意思

答案多态。 主要是将数据类型的确定由编译时推迟到了运行时。

这个问题其实浅涉及到两个概念运行时和多态。 简单来说运行时机制使我们直到运行时才去决定一个对象的类别以及调用该类别对象指定方法。 多态不同对象以自己的方式响应相同的消息的能力叫做多态。意思就是假设生物类life都用有一个相同的方法-eat;

那人类属于生物猪也属于生物都继承了life后实现各自的eat但是调用是我们只需调用各自的eat方法。 也就是不同的对象以自己的方式响应了相同的消息响应了eat这个选择器 。 因此也可以说运行时机制是多态的基础 ~~~

9.what is difference between NSNotification and protocol?通知和协议的不同之处

答案协议有控制链(has-a)的关系通知没有。 首先我一开始也不太明白什么叫控制链专业术语了~ 。但是简单分析下通知和代理的行为模式我们大致可以有自己的理解简单来说通知的话它可以一对多一条消息可以发送给多个消息接受者。 代理按我们

的理解到不是直接说不能一对多比如我们知道的明星经济代理人很多时候一个经济人负责好几个明星的事务。 只是对于不同明星间代理的事物对象都是不一样的一一对应不可能说明天要处理A明星要一个发布会代理人发出处理发布会的消息后别称B的发布会了。但是通知就不一样他只关心发出通知而不关心多少接收到感兴趣要处理。 因此控制链has-a从英语单词大致可以看出单一拥有和可控制的对应关系。

10.What is push notification?什么是推送消息

11.Polymorphi sm 关于多态性

答案多态子类指针可以赋值给父类。 这个题目其实可以出到一切面向对象语言中 因此关于多态继承和封装基本最好都有个自我意识的理解也并非一定要把书上资料上写的能背出来。 最重要的是转化成自我理解。

12.Singleton?对于单例的理解

答案 11 12题目其实出的有点泛泛的感觉了可能说是编程语言需要或是必备的基础。 基本能用熟悉的语言写出一个单例 以及可以运用到的场景或是你编程中碰到过运用的此种模式的框架类等。进一步点考虑下如何在多线程访问单例时的安全性。

13.What is responder chain?说说响应链

答案 事件响应链。包括点击事件画面刷新事件等。在视图栈内从上至下或者从下之上传播。 可以说点事件的分发传递以及处理。具体可以去看下touch事件这块。因为问的太抽象化了严重怀疑题目出到越后面就越笼统。

14.Difference between frame and bounds? frame和bounds有什么不同

答案:fr ame指的是该v i ew在父v i ew坐标系统中的位置和大小。

参照点是父亲的坐标系统 bounds指的是该view在本身坐标系统中的位置和大小。 参照点是本身坐标系统

15.Difference between method and selector?方法和选择器有何不同

答案 selector是一个方法的名字 method是一个组合体包含了名字和实现.详情可以看apple文档。

16. Is there any garbage collection mechanism in Objective C.?

OBC的垃圾回收机制

答案 OBC2.0有Garbage collection但是iOS平台不提供。 一般我们了解的objective-c对于内存管理都是手动操作的但是也有

自动释放池。 但是差了大部分资料貌似不要和arc机制搞混就好了。 求更多~~

17.NSOperation queue?

答案存放NSOperation的集合类。 操作和操作队列基本可以看成java中的线程和线程池的概念。用于处理ios多线程开发的问题。

网上部分资料提到一点是虽然是queue但是却并不是带有队列的概念放入的操作并非是按照严格的先进现出。 这边又有个疑点是对于队列来说先进先出的概念是Afunc添加进队列 B func紧跟着也进入队列Afunc先执行这个是必然的但是Bfunc是等Afunc完全操作完以后 B才开始启动并且执行因此队列的概念离乱上有点违背了多线程处理这个概念。 但是转念一想其实可以参考银行的取票和叫号系统。 因此对于A比B先排队取票但是B率先执行完操作我们亦然可以感性认为这还是一个队列。 但是后来看到一票关于这操作队列话题的文章其中有一句提到 “因为两个操作提交的时间间隔很近线程池中的线程谁先启动是不定的。 ” 瞬间觉得这个queue名字有点忽悠人了还不如pool~综合一点我们知道他可以比较大的用处在于可以帮组多线程编程就好了。

18.What is lazy loading?

答案懒汉模式只在用到的时候才去初始化。 也可以理解成延时加载。 我觉得最好也最简单的一个列子就是tabl eVi ew中图片的加

载显示了。 一个延时载避免内存过高一个异步加载避免线程堵塞。

19.Can we use two tableview controllers on one viewcontroller?

是否在一个视图控制器中嵌入两个tabl ev i ew控制器

答案一个视图控制只提供了一个View视图理论上一个tabl eVi ewControl ler也不能放吧 只能说可以嵌入一个tabl evi ew视图。当然题目本身也有歧义如果不是我们定性思维认为的UIVi ewControl ler 而是宏观的表示视图控制者那我们倒是可以把其看成一个视图控制者它可以控制多个视图控制器 比如TabbarControl ler那样的感觉。

20.Can we use one tableview with two different datasources?Howyou will achieve this?一个tableView是否可以关联两个不同的数据源你会怎么处理

答案首先我们从代码来看数据源如何关联上的其实是在数据源关联的代理方法里实现的。 因此我们并不关心如何去关联他他怎么关联上方法只是让我返回根据自己的需要去设置如相关的数据源。

因此我觉得可以设置多个数据源啊但是有个问题是你这是想干嘛呢想让列表如何显示不同的数据源分区块显示

21.Objectc的类可以多重继承么可以实现多个接口么重写一

ParkInHost - 俄罗斯VPS主机 抗投诉 55折,月付2.75欧元起

ParkInHost主机商是首次介绍到的主机商,这个商家是2013年的印度主机商,隶属于印度DiggDigital公司,主营业务有俄罗斯、荷兰、德国等机房的抗投诉虚拟主机、VPS主机和独立服务器。也看到商家的数据中心还有中国香港和美国、法国等,不过香港机房肯定不是直连的。根据曾经对于抗投诉外贸主机的了解,虽然ParkInHost以无视DMCA的抗投诉VPS和抗投诉服务器,但是,我们还是要做好数据备...

UCloud优刻得,新增1核1G内存AMD快杰云机型,服务器2元/首月,47元/年

UCloud优刻得近日针对全球大促活动进行了一次改版,这次改版更加优惠了,要比之前的优惠价格还要低一些,并且新增了1核心1G内存的快杰云服务器,2元/首年,47元/年,这个价格应该是目前市面上最低最便宜的云服务器产品了,有需要国内外便宜VPS云服务器的朋友可以关注一下。UCloud好不好,UCloud服务器怎么样?UCloud服务器值不值得购买UCloud是优刻得科技股份有限公司旗下拥有的云计算服...

CloudCone:KVM月付1.99美元起,洛杉矶机房,支持PayPal/支付宝

CloudCone的[2021 Flash Sale]活动仍在继续,针对独立服务器、VPS或者Hosted email,其中VPS主机基于KVM架构,最低每月1.99美元,支持7天退款到账户,可使用PayPal或者支付宝付款,先充值后下单的方式。这是一家成立于2017年的国外VPS主机商,提供独立服务器租用和VPS主机,其中VPS基于KVM架构,多个不同系列,也经常提供一些促销套餐,数据中心在洛杉...

ios 6 1 3 越狱为你推荐
笔记本内存价格笔记本内存条多少钱?软银收购wework如何看待腾讯收购 Supercell盗版win8.1升级win10盗版win10怎么升级到win10英语词典哪个好什么英语词典好?速腾和朗逸哪个好大众速腾和朗逸哪个比较好?家用!云盘哪个好云盘有哪些,哪个云盘好群空间登录群空间无法正常登陆的问题网页qq空间登录网页查看qq空间yy空间登录怎么登陆YY空间辽宁联通网上营业厅辽宁联通怎样用发短信方式查询话费和流量
万网域名 购买域名 vps服务器租用 中文域名申请 彩虹ip ca4249 智能骨干网 毫秒英文 空间出租 jsp空间 asp免费空间申请 傲盾官网 免费申请网站 789电视剧 web服务器搭建 韩国代理ip 石家庄服务器托管 lamp兄弟连 网络速度 什么是dns 更多