读写权限关键字
readonly
readwrite (默认)
原子性
atomic(默认)
保证 赋值和获取是线程安全的 (直接对成员变量的获取 赋值)并不代表操作和访问
假如我们用atomic 来修饰一个数组 对数组进行赋值 获取 是可以保证线程安全的 但是当我们对这个数组进行操作时 如 增 删 就不在atomic 的负责范围之内了 也就是说 用atomic修饰一个数组 对数组进行 增加 删除操作 是不保证线程安全的 只对 赋值 获取有效
noatomic
引用计数
return / strong
return 一般在MRC中使用
strong 一般在ARC中使用
这两个是用来修饰对象的
assign / unsafe_unretained
assign 可以修饰基本类型 也可以修饰对象类型
unsafe_unretained 只有在MRC中 使用的比较频繁

悬垂指针 也就是 assign 所修饰的对象在被释放之后 assign指针仍然指向原对象 地址 这是如果通过assign指针继续访问源对象 可能就会由于悬垂指针的原因 导致内存泄漏 或 程序异常
weak

copy

浅拷贝 会发生引用计数的改变 不会开辟新的内存空间

两块内容相同的不同空间




进行拷贝之后 可变数组 copy 过后变成了 不可变数组 在调用时候很可能出现异常 crash
网友评论