美文网首页
OC中属性readwrite,readonly,assign,r

OC中属性readwrite,readonly,assign,r

作者: JamesYi | 来源:发表于2020-03-10 14:50 被阅读0次

    readwrite:可读可改,同时生成get方法和set方法的声明和实现
    readonly:只读不可改,只生成get方法的声明和实现(都不写默认是readwrite)
    注:一般我们封装属性只希望外界能看到,自己能够修改的时候,在.h文件里用readonly修饰,在.m文件里面用readwrite修饰。

    assign:是赋值特性,setter方法将传入参数赋值给实例变量;仅设置变量时;
    retain:表示持有特性,setter方法将传入参数先保留,再赋值,传入参数的retaincount会+1
    copy:表示拷贝特性,setter方法将传入特性复制一分;需要完全一份新的变量时
    nonatomic:非原子操作,决定编译生成的getter setter是否原子操作,atomic表示多线程安全,一般使用nonatomic(非原子操作,决定编译器生成的setter和getter是否是原子操作,用atomic修饰时,在该属性在调用getter和setter方法时,会加上自旋锁(osspinlock),保证同一时刻只能有一个线程调用属性的读/写方,但并不能保证线程安全,(因为别的线程还能进行读写之外的其他操作,比如另一个线程调用了release方法,可能会导致crash)。因此大部分情况下使用nonatomic,线程安全需要开发者自己来保证。)

    相关文章

      网友评论

          本文标题:OC中属性readwrite,readonly,assign,r

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