自动属性声明->属性特性

作者: 鋼鉄侠 | 来源:发表于2016-10-08 09:31 被阅读22次

    在Xcode4.2之后,Objective-C新添加一项特性:property

    在@property中属性特性有3类

    • @property(多线程特性,读写特性,内存管理特性)属性类型 属性名称

      • 多线程特性:nonatomic,atomic
      • 读写特性:readwrite,readonly
      • 内存管理特性:strong,weak,copy,unsafe-unretain,retain,assign。
    • 多线程特性
      可选项:nonatomic,atomic;默认是atomic
      nonatomic非原子性访问,不加同步,多线程并发访问会提高性能,但有可能会出现数据安全问题,一般iOS开发推荐此特性,数据安全问题交给服务器去处理。
      atomic代表多线程并发安全。

    • 读写特性
      可选项:readwrite,readonly;默认是readwrite
      如果属性声明为readwrite,那么同时也会自动生成set/get方法;
      如果属性声明为readonly,那么只会生成get方法,而不会生成set方法
    • 内存管理特性
      可选项:strong,weak,copy,unsafe-unretain,retain,assign;默认为strong
      strong,父对象对子对象的引用一般用这种方式
      weak,为了避免循环引用导致内存泄漏,一般子对象指向父对象、父父对象的引用使用此特性。
      copy,为此属性赋值时,需要重新拷贝一份,赋值给属性,修改原来的哪个对象不会影响属性的值。常用于充当临时变量保存其他对象指针的属性,而且该指针是可变类型的。
      unsafe-unretain,该属性所致的对象被释放的时候,该属性不会被设置为nil,而是设置为空指针。
      retain,在setter方法对参数进行release旧值在retain新值
      assign,表示setter方法直接赋值,不进行任何retain操作,一般用于属性为基本类型的声明。

    • 更改属性的set/get方法名
      一般BOOL类型为应该以is开头,可以通过修改sex属性的get方法名
      @property(nonatomic,getter = isMan )BOOL sex;
      那么sex属性的get方法名为isMan。
      修改set方法名类似setter = set方法名

    相关文章

      网友评论

        本文标题:自动属性声明->属性特性

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