方法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的类可以多重继承么可以实现多个接口么重写一

Hostiger 16G大内存特价VPS:伊斯坦布尔机房,1核50G SSD硬盘200Mbps带宽不限流量$59/年

国外主机测评昨天接到Hostigger(现Hostiger)商家邮件推送,称其又推出了一款特价大内存VPS,机房位于土耳其的亚欧交界城市伊斯坦布尔,核50G SSD硬盘200Mbps带宽不限月流量只要$59/年。 最近一次分享的促销信息还是5月底,当时商家推出的是同机房同配置的大内存VPS,价格是$59.99/年,不过内存只有10G,虽然同样是大内存,但想必这次商家给出16G,价格却是$59/年,...

百纵科技,美国独立服务器 E52670*1 32G 50M 200G防御 899元/月

百纵科技:美国高防服务器,洛杉矶C3机房 独家接入zenlayer清洗 带金盾硬防,CPU全系列E52670、E52680v3 DDR4内存 三星固态盘阵列!带宽接入了cn2/bgp线路,速度快,无需备案,非常适合国内外用户群体的外贸、搭建网站等用途。C3机房,双程CN2线路,默认200G高防,3+1(高防IP),不限流量,季付送带宽美国洛杉矶C3机房套餐处理器内存硬盘IP数带宽线路防御价格/月套...

RAKsmart便宜美国/日本/中国香港VPS主机 低至月$1.99 可安装Windows

RAKsmart 商家这几年还是在做事情的,虽然他们家顺带做的VPS主机并不是主营业务,毕竟当下的基础云服务器竞争过于激烈,他们家主营业务的独立服务器。包括在去年开始有新增多个数据中心独立服务器,包括有10G带宽的不限流量的独立服务器。当然,如果有需要便宜VPS主机的他们家也是有的,比如有最低月付1.99美元的美国VPS主机,而且可选安装Windows系统。这里商家有提供下面六款六月份的活动便宜V...

ios 6 1 3 越狱为你推荐
登陆qq空间首页手机怎么没法登陆QQ空间首页了?视频制作软件哪个好免费的视频剪辑软件用哪个好?天气预报哪个好用哪个最准确手机上的天气预报软件,哪个最准,最好用?杀毒软件哪个好什么杀毒软件比较好呢??浮动利率和固定利率哪个好浮动利率房贷与固定利率房贷比较 购房者如何选择网校哪个好初中网校哪个好?电信10000宽带测速电信宽带最多有几兆的网速?dns服务器有什么用DNS服务器是什么,有什么作用。dns服务器什么意思DNS服务器是什么意思啊?是指路由器吗?360云盘登陆怎样登陆360我的云盘
虚拟主机服务器 金万维动态域名 香港bgp机房 瓦工 adman 樊云 256m内存 香港托管 payoneer 12u机柜尺寸 ev证书 创梦 lol台服官网 免费活动 爱奇艺vip免费试用7天 息壤代理 阿里云官方网站 百度云加速 游戏服务器出租 群英网络 更多