属性关键字面试题

读写权限

readonly

readwrite

 

原子性

atomic 赋值和获取是线程安全 例如用atomic修饰一个数组,对这个数组赋值和获取是线程安全的,但是如果操作数组,例如增删元素,那不在atomic有效范围内

nonatomic

 

引用计数

retain/strong

assign(可以修改对象和基本数据类型)/unsafe_unretained(mrc使用)

weak

copy

 

assign

修饰基本数据类型,如int BOOL等

修饰对象类型时,不改变其引用计数

会产生悬垂指针。(assign修饰的对象 被释放之后 指针还是指向原地址)

 

weak

修饰对象类型时,不改变其引用计数

所指向对象在被释放之后会自动置nil

 

浅拷贝特点:

多了个指针的指向 增加了引用计数

没有发生新的内存分配

 

深拷贝特点:

不会添加被拷贝对象的引用计数

产生了一个内存分配

 

区分深拷贝 浅拷贝

是否开辟了新的内存空间

是否影响了引用计数

 

copy关键字

 

 

可变对象的copy和mutableCopy都是深拷贝

不可变对象的copy是浅拷贝 mutableCopy是深拷贝

copy方法返回的否是不可变对象

 

 

 

执行add remove方法就会crash

 

posted @ 2020-04-16 11:37  Justin_mr  阅读(127)  评论(0编辑  收藏  举报