美文网首页
@property关键字总结

@property关键字总结

作者: YY_Lee | 来源:发表于2017-06-22 14:53 被阅读4次

    声明属性关键字分三种类型

    原子性
    • atomic:默认值,访问时加锁,访问完解锁其他线程才能修改,是线程安全的;考虑性能iPhone开发中一般不用此值;

    • nonatomic:非线程安全,不能保证多线程环境的安全性,效率高,基本使用此值;

    读写
    • readwrite:默认关键字,可读可写,属性set、get方法都有;
    • readonly:只读,属性值不能被外界修改,只有get方法;
    • writeonly:只写,属性值不能被外界读取,只有set方法;
    内存管理策略
    • assign:默认值,MRC下可修饰OC对象,表示弱引用,ARC下用来修饰基本数据类型;
    • retain:表示对对象的强引用,对象进行引用计数器+1,ARC下使用strong代替
    • strong:ARC下使用,相当于retain,表示对对象的强引用;
    • copy:只能修饰OC对象,会对赋值的对象进行拷贝。
    • weak:ARC下使用,相当于assign,区别在于属性所指的对象遭到摧毁时,系统会将 weak 修饰的属性对象的指针置为 nil;
    • unsafe_unretained:修饰OC对象,类似weak,表示弱引用,指向对象销毁后可能导致野指针,基本不使用;
    扩展
    • @synthesize: 自定义属性对应成员变量的名字
    • @dynamic :告诉系统不要自动生成属性的setter和getter方法(一般要自定义setter和getter方法时使用)
    iOS9之后新增的关键字
    • nonnull:不可以为空
    • nullable:可以为空
    • null_resettable:get方法不能为空,set方法可以为空(注意:如果使用null_resettable,必须重写 get 方法或者 set 方法,处理传递的值为空的情况)
    • __null_unspecified:不确定是否为空
    • __kindof:类型为这个类或其子类(例如(nullable __kindof UITableViewCell *)表示返回值可以是UITableViewCell及其子类)

    相关文章

      网友评论

          本文标题:@property关键字总结

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