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

作者: 鋼鉄侠 | 来源:发表于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方法名

相关文章

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

    在Xcode4.2之后,Objective-C新添加一项特性:property 在@property中属性特性有3...

  • Objective-C总结----2.如何编写一个类(下)

    Objective-C2.0发布,新特性:自动声明、补全属性、点语法,大大提高了开发效率,现在我将用自动声明属性的...

  • ShaderLab 属性,特性声明

    Numbers and Sliders Colors and Vectors Textures Attribute...

  • Objective-c 知识总结 -- @property

    目录 一、属性声明的概念、构成、访问 二、属性声明的自动合成 三、属性声明的可选选项 ( 关键字 ) 四、属性的 ...

  • DTD

    一、声明 内部DOCTYPE 外部DOCTYPE 二、XML结构 元素 属性 实体< > &...

  • @property各参数的作用以及用法

    1:@property的作用 . 自动生成私有属性. . 自动生成私有属性的getter setter方法的声明....

  • 34章 属性

    34 属性 34.1属性的特性 存取类型任何一个属性可以声明为readwrite或readonly。默认为read...

  • OC基础学习9:属性

    1 使用属性 接口代码简化没有使用属性: 使用属性: @ property预编译指令的作用是自动声明属性的sett...

  • iOS----属性

    声明属性 Objective-C声明的属性特性提供了一种简单的方法来声明和实现对象的访问器方法。 概述 ...

  • python面向对象2

    内置函数属性 1.声明是内置类属性 声明类的时候系统自动添加的属性(可能是字段也可能是对象属性) 定制当前类的对象...

网友评论

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

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