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

在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方法名

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • //// @property 、属性、修饰符// Created by mac on 2016/10/30./...
    甘哲157阅读 5,523评论 1 8
  • 1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch...
    阳光的大男孩儿阅读 10,469评论 0 13
  • “你说,月亮在哪?”她执着天真的表情让他心如刀割。 “在很远很远。” “你看得见吗?” “看不见。” “四郎。”他...
    鸽子_4b4a阅读 1,436评论 0 0