2016.1.25
http://my.oschina.net/openlab/blog/89354
NSString,就用copy,
定义一个模型对象,就用strong,
只是赋值的,基本数据类型 ,例如float、double、char 以及CGRect类似的就用assign。
2016.1.26 几个疑惑的问题
http://www.cocoachina.com/programmer/20131209/7499.html
2016.1.27 面试题
1. method swizzling
2.当一个空指针(nil pointer)调用了一个方法会发生什么?——了解处理基础的Objective-C相关问题是很重要的,有好多次我都听到了错误的回答,这很令我震惊。
3.为什么retainCount绝对不能用在发布的代码中?请给出两个相对独立的解释。—— 考察这个问题会有两个好处:一是可以确定面试者目前确实没有使用retainCount,并且看看他们是否知道为什么他们不应该使用。
4.请说明一下你查找或者解决内存泄露的处理过程。这个可以深入了解面试者对内存管理方面的知识,instruments的运用及其调试的处理过程。——有时候我会听到一些可怕的回答:“注释掉部分代码直到内存泄露问题被修复”。
5.解释下自动回收池(autorelease pool)在程序运行时是如何运作的。 -——这类型的问题已经超出代码基础了,一个程序员只有阅读过一部分开发类书籍才能学到这些内容。这些问题也同样能考察他对程序底层代码运作的了解程度。
6.当处理属性申明的时候,原子(atomic)跟 非原子(non-atomic)属性有什么区别?-——好多人都不知道这个问题的答案,我又一次震惊了。很多人他们都是看别人是怎么声明的,他们就怎么来声明。类似这种的题目会暴漏出来很多问题。
7.在C语言中,你如何能用尽可能短的时间来倒转一个字符串?—— 我不大喜欢深入问计算机的核心内容, 但是通过这个问题可以让我了解到他们是如何思考的,同样也可以了解到他们的C语言背景。深入询问时间复杂度(big O notation)也能让我了解面试者的水平。
8.遍历一个NSArray和一个NSSet,哪一个更快? ——另一个深入的提问。有时候一个类解决了问题并不能代表你就应该用这个类。
9.解释代码签名(code signing)是如何运作的。 —— 很多候选人都完全不了解代码签名是如何运作的,然后抱怨说他们一直被一些代码签名的一些问题所困扰。
10.Objective-C中的posing指的是什么? —— Posing是一个Object-C的小众语法特性。像 swizzling那个问题一样,这个问题可以让我了解面试者对语言的深入程度。
11.列举标准Xcode版本中的6个工具。 —— 通过这个问题我可以大致的了解到面试者会在这些工具上花费多少时间。提示:至少得用10%的写代码的时间来用这些工具。
12.copy跟retain有什么区别? —— 最近好多开发者都开始用ARC了,内存方面的问题就更能反映出一个开发者的知识水平了。
13.frames跟bounds有哪些区别? -——我不会问很多界面相关 (GUI-type)的问题,我应该问的多一些,不过通过这个问题我差不多能了解到一个开发者做了多少界面工作。
14.执行如下的代码会发生什么情况?
- Ball *ball = [[[[Ball alloc] init] autorelease] autorelease];
15.另一个内存相关的问题,这个问题的答案不能单用会崩溃来回答,我想要知道为什么崩溃,何时会崩溃。
列举5个iOS app的状态。—— 几乎没有人能正确的回答出这个问题,通常我会给出一个例子,诸如后台运行的状态(background state),这样他们就知道我在说的是那块儿内容了。
答案:
http://blog.163.com/gene_lu/blog/static/64025421201432892157987/
http://blog.163.com/gene_lu/blog/static/64025421201432892157987/