2-6属性关键字

读写权限。原子性。引用计数

readonly readwrite 默认的
atomic nonatomic 
retain/strong
assign  weak copy

assign。weak

都不会增加引用计数

修饰基本数据类型
对象置为空 不会把指针置为nil

weak
修饰对象
所指的对象释放后会自动置为nil ???

copy

浅拷贝 只是指针拷贝 增加引用计数
深拷贝 是内容拷贝【占用新内存】不增加引用计数

可变对象。copy mutableCopy 深拷贝
不可变对象。copy 浅拷贝  mutableCopy 深拷贝

copy方法都是不可变对象


@property (nonatomic, copy) NSMutableArray *arr;

会有什么潜在的问题? copy之后都是不可变对象。当我们调用add 或者 remove 的时候就回崩溃 

MRC下如何重写修饰变量的setter方法

- (void)setObj:(id)obj {
    if (_obj != obj) {
        [_obj release];
        _obj = [obj retain];
    }
}

分类的实现原理

1.运行时决定
2.同名方法 最后编译的最后生效
3.覆盖父类方法。 父类的仍然存在  

KVO实现原理

我们使用KVO是系统会为监听的那个类动态添加自类。然后父类的isa指向子类
子类 会重写setter方法

你可能感兴趣的:(2-6属性关键字)