基础知识点整理

2015-10-29  本文已影响45人  HJR

基础知识点整理

iOSInterviewQuestions中摘录了个人认为重要且容易遗忘的知识点。

1、什么情况使用weak关键字,相比assign有什么不同?

2、怎么使用copy关键字?

(1) NSString、NSArray、NSDictionary 等经常使用copy关键字,因为他们有对应的可变类型。为了保护属性的封装性,防止申明的属性在不知情的情况下被改变,需要用copy关键字拷贝出一份不可变副本。
(2)block也使用copy修饰。在传统的MRC中,方法内部的block是在栈区,使用copy可以把block放到堆区。

3、@property (copy) NSMutableArray 写法会有什么问题?

4、@protocol 和 category 中使用 @property

5、什么时候@property 使用 setter=<name>的情形。

6、@用@property声明的NSString(或NSArray、NSDictionary),如果用strong关键字可能会出现的问题。

7、对非集合类对象的copy操作

copy mutableCopy
immutableObject 浅拷贝 深拷贝
mutableObject 深拷贝 深拷贝

8、对 集合类对象进行copy操作

copy mutableCopy
immutableObject 浅拷贝 单层深拷贝
mutableObject 单层深拷贝 单层深拷贝

9、自动合成属性实例变量后,@synthesize 的使用场景。

10、objc中向一个对象发送消息[objc foo] 和 objc_msgSend()函数之间有什么关系

[objc foo]; 在动态编译时会被转译为
objc_msgSend(objc,@selector(foo))

11、什么时候会报unrecognized selector 异常?

12、一个objc的对象的isa指针指向哪里?有何作用?

指向其所属的类,从而可以在该类的方法列表中找到对象的方法。

13、selfsuper关键字的理解。

上一篇下一篇

猜你喜欢

热点阅读