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

易探云美国云服务器评测,主机低至33元/月,336元/年

美国服务器哪家平台好?美国服务器无需备案,即开即用,上线快。美国服务器多数带防御,且有时候项目运营的时候,防御能力是用户考虑的重点,特别是网站容易受到攻击的行业。现在有那么多美国一年服务器,哪家的美国云服务器好呢?美国服务器用哪家好?这里推荐易探云,有美国BGP、美国CN2、美国高防、美国GIA等云服务器,线路优化的不错。易探云刚好就是做香港及美国云服务器的主要商家之一,我们来看一下易探云美国云服...

腾讯云轻量服务器两款低价年付套餐 2核4GB内存8M带宽 年74元

昨天,有在"阿里云秋季促销活动 轻量云服务器2G5M配置新购年60元"文章中记录到阿里云轻量服务器2GB内存、5M带宽一年60元的活动,当然这个也是国内机房的。我们很多人都清楚备案是需要接入的,如果我们在其他服务商的域名备案的,那是不能解析的。除非我们不是用来建站,而是用来云端的,是可以用的。这不看到其对手腾讯云也有推出两款轻量服务器活动。其中一款是4GB内存、8M带宽,这个比阿里云还要狠。这个真...

稳爱云(26元),香港云服务器 1核 1G 10M带宽

稳爱云(www.wenaiyun.com)是创建于2021年的国人IDC商家,主要目前要出售香港VPS、香港独立服务器、美国高防VPS、美国CERA VPS 等目前在售VPS线路有三网CN2、CN2 GIA,该公司旗下产品均采用KVM虚拟化架构。机房采用业内口碑最好香港沙田机房,稳定,好用,数据安全。线路采用三网(电信,联通,移动)回程电信cn2、cn2 gia优质网络,延迟低,速度快。自行封装的...

ios 6 1 3 越狱为你推荐
小说软件哪个好用免费现在看小说用什么软件好,不用钱的,机械表和石英表哪个好手表中,石英表和机械表的区别和优缺点炒股软件哪个好股票软件哪个最好用?红茶和绿茶哪个好红茶和绿茶哪个更好?电动牙刷哪个好电动牙刷哪个牌子比较好,不要那么贵的腾讯空间登录腾讯qq空间进入登陆个人QQ空间如何增加百度收录如何提高百度的收录数量google广告申请怎么样申请谷歌广告成功360云盘登陆首页怎样进入360的网络硬盘360云盘企业版360云盘企业版网页打开的 怎么不能编辑?
vps代理 花生壳免费域名申请 如何申请免费域名 免费申请域名 樊云 优惠码 贵州电信宽带测速 韩国网名大全 大容量存储器 帽子云 老左来了 美国网站服务器 最好的qq空间 能外链的相册 免费个人网页 攻击服务器 蓝队云 美国代理服务器 cx域名 ipower 更多