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.Objectc的类可以多重继承么可以实现多个接口么重写一
sharktech怎么样?sharktech (鲨鱼机房)是一家成立于 2003 年的知名美国老牌主机商,又称鲨鱼机房或者SK 机房,一直主打高防系列产品,提供独立服务器租用业务和 VPS 主机,自营机房在美国洛杉矶、丹佛、芝加哥和荷兰阿姆斯特丹,所有产品均提供 DDoS 防护。不知道大家是否注意到sharktech的所有服务器的带宽价格全部跳楼跳水,降幅简直不忍直视了,还没有见过这么便宜的独立服...
在之前几个月中也有陆续提到两次HostYun主机商,这个商家前身是我们可能有些网友熟悉的主机分享团队的,后来改名称的。目前这个品牌主营低价便宜VPS主机,这次有可以看到推出廉价版本的美国CN2 GIA VPS主机,月费地址15元,适合有需要入门级且需要便宜的用户。第一、廉价版美国CN2 GIA VPS主机方案我们可看到这个类型的VPS目前三网都走CN2 GIA网络,而且是原生IP。根据信息可能后续...
上次部落分享过VirMach提供的End of Life Plans系列的VPS主机,最近他们又发布了DEDICATED MIGRATION SPECIALS产品,并提供6.5-7.5折优惠码,优惠后最低每月27.3美元起。同样的这些机器现在订购,将在2021年9月30日至2022年4月30日之间迁移,目前这些等待迁移机器可以在洛杉矶、达拉斯、亚特兰大、纽约、芝加哥等5个地区机房开设,未来迁移的时...