美文网首页
Object-C属性认识

Object-C属性认识

作者: 阿两sama | 来源:发表于2018-06-14 13:58 被阅读10次

    ARC下

    assgin:最简单的属性,非对象类型可以定义。

    weak:不持有对象原始对象被释放后自动置为nil,这也是为什么weak对象不能初始化的原因。

    strong:自己持有对象,原始对象被释放以后,自己持有的对象不会有影响

    copy:和strong一样也是自己持有对象,但是相当于重写了copy方法。持有的对象会有一片新的内存地址,原始对象改变后不会影响copy的值。例子

            @property(copy)NSString*string;

              -(void)setString:(NSString*)string{

                                self.string=[string copy];

                }

    对于不可变对象有可变子类的时候使用copy可以防止值被意外篡改,在setString方法中传入NSMutableString是被允许的,想象一下这时对象是strong属性并且复制的时候没有使用copy方法,那么就会出现string=MutableString;。copy属性可以防止这种情况出现

    unsafe_unretained:和weak类似,但是原始对象释放后,并不会置为nil

    nonatomic:非原子性,读写速度快于atomic。非多线程情况下都使用nonatomic。因为苹果默认是atomic,所以需要显性设置属性为nonatomic。

    atomic:原子性,多线程情况下使用(我暂时没有使用过)

    readwrite:可读写

    readonly:只读,编译的时候不会生成set方法

    注:有写得不对的地方欢迎指正

    相关文章

      网友评论

          本文标题:Object-C属性认识

          本文链接:https://www.haomeiwen.com/subject/kqcyeftx.html