iOS笔记--基础面试题 01

问题:

1.浅复制和深复制的区别?

答案:

浅层复制:只复制指向对象的指针,而不复制引用对象本身。

深层复制:复制引用对象本身。意思就是说我有个A对象,复制一份后得到A_copy对象后,对于浅复

制来说,A和A_copy指向的是同一个内存资源,复制的只不过是是一个指针,对象本身资源还是只有

一份,那如果我们对A_copy执行了修改操作,那么发现A引用的对象同样被修改,这其实违背了我们复

制拷贝的一个思想。深复制就好理解了,内存中存在了两份独立对象本身。用网上一哥们通俗的话将就

是:浅复制好比你和你的影子,你完蛋,你的影子也完蛋深复制好比你和你的克隆人,你完蛋,你的克

隆人还活着。


问题:

2.类别的作用?继承和类别在实现中有何区别?

答案:

category可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除

修改。并且如果类别和原来类中的方法产生名称冲突,则类别将覆盖原来的方法,因为类别具有更高的

优先级。类别主要有3个作用:

(1)将类的实现分散到多个不同文件或多个不同框架中。

(2)创建对私有方法的前向引用。

(3)向对象添加非正式协议。

继承可以增加,扩展父类方法,并且可以增加属性。


问题:

3.类别和类扩展的区别。

答案:

category和extensions的不同在于后者可以添加属性。另外后者添加的方法是必须要实现的。

extensions可以认为是一个私有的Category。


问题:

4.oc中的协议和java中的接口概念有何不同?

答案:

1> OC中的协议有2层含义,官方定义为formal和informalprotocol。前者和Java接口一样。

informal protocol中的方法属于设计模式考虑范畴,不是必须实现的,但是如果有实现,就会改变类

的属性。其实关于正式协议,类别和非正式协议我很早前学习的时候大致看过,也写在了学习教程里

“非正式协议概念其实就是类别的另一种表达方式“这里有一些你可能希望实现的方法,你可以使用他们

更好的完成工作”。这个意思是,这些是可选的。比如我门要一个更好的方法,我们就会申明一个这样

的类别去实现。然后你在后期可以直接使用这些更好的方法。这么看,总觉得类别这玩意儿有点像协议

的可选协议。"现在来看,其实protocal已经开始对两者都统一和规范起来操作,因为资料中说“非正式

协议使用interface修饰“,现在我们看到协议中两个修饰词:“必须实现(@requied)”和“可选实现

(@optional)”。

2>OC中的协议(formalprotocol)与java中的接口概念基本一致,OC中非正式协议(informal 

protocol)就是类别。在java中如果继承了接口,但不实现其方法,会得到一个error(无法编译);在

OC中的正式协议,如果不实现,会得到一个warning(可编译执行),如果想去除waring,还可以加

关键字(@optional),让它可选实现方法。


问题:

5.What are KVO and KVC?


答案:kvc:键-值编码是一种间接访问对象的属性使用字符串来标识属性,而不是通过调用存取方法,

直接或通过实例变量访问的机制。很多情况下可以简化程序代码。apple文档其实给了一个很好的例

子。kvo:键值观察机制,他提供了观察某一属性变化的方法,极大的简化了代码。具体用看到嗯哼用到

过的一个地方是对于按钮点击变化状态的的监控。比如我自定义的一个button

kvc是如何找key

对于系统是根据keypath去取的到相应的值发生改变,理论上来说是和kvc机制的道理是一样的。对于

kvc机制如何通过key寻找到value:“当通过KVC调用对象时,比如:[selfvalueForKey:@”someKey”]

时,程序会自动试图通过几种不同的方式解析这个调用。首先查找对象是否带有someKey这个方法,

如果没找到,会继续查找对象是否带有someKey这个实例变量(iVar),如果还没有找到,程序会继

续试图调用-(id)valueForUndefinedKey:这个方法。如果这个方法还是没有被实现的话,程序会抛出

一个NSUndefinedKeyException异常错误。自总结:为什么要把字典转模型,因为防止取值时@"错误",

所以转模型取值时会有提示有最后机会响应该请求.



问题:

6.代理的作用?

答案:

代理的目的是改变或传递控制链。允许一个类在某些特定时刻通知到其他类,而不需要获取到那些类的指针。可以减少框架复杂度。另外一点,代理可以理解为java中的回调监听机制的一种类似。


问题:

7.What are mutable and immutable types in Objective C?

oc中可修改和不可以修改类型。


答案:

可修改不可修改的集合类。这个我个人简单理解就是可动态添加修改和不可动态添加修改一样。比如

NSArray和NSMutableArray。前者在初始化后的内存控件就是固定不可变的,后者可以添加等,可以

动态申请新的内存空间。


问题:

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

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

答案:

多态。主要是将数据类型的确定由编译时,推迟到了运行时。这个问题其实浅涉及到两个概念,运行时

和多态。简单来说,运行时机制使我们直到运行时才去决定一个对象的类别,以及调用该类别对象指定

方法。多态:不同对象以自己的方式响应相同的消息的能力叫做多态。意思就是假设生物类(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?

问题:什么是推送消息?


答案:。iOS中消息推送机制又叫消息机制,其包括两类:一类是本地通知;另一类是推送通知,也叫

远程通知。两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒两种形式告诉用户,并且点击通

知可以会打开应用程序,但是实现原理却完全不同:本地通知是由本地应用触发的,它是基于时间行为

的一种通知形式;和本地通知不同,推送通知是由应用服务提供商发起的,通过苹果的APNs(Apple 

Push NotificationServer)发送到应用客户端,如下图


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,719评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,337评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,887评论 0 324
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,488评论 1 266
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,313评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,284评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,672评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,346评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,644评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,700评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,457评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,316评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,706评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,261评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,648评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,859评论 2 335

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,107评论 29 470
  • C 部分 1.static 关键字的作用? 第一个作用:隐藏。 当我们同时编译多个文件时,所有未加static前缀...
    pingui阅读 4,343评论 2 48
  • iOS面试题及答案 1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一...
    iOS_阿辉阅读 1,899评论 0 32
  • 多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原...
    LZM轮回阅读 1,999评论 0 12
  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 2,341评论 0 35