• iOS基础知识之属性及属性关键字


    iOS属性及属性关键字


    一、属性功能:
    1.给现有的成员变量生成一对setter/getter方法。
    2.如果没有声明成员变量,自动声明一个_属性名的私有变量(默认的成员变量是受保护的)。


    二、属性关键字:
    assign 默认(缺省)关键字,基本数据类型的赋值。
    MRC:手动管理内存
    retain 对象的属性声明,保存引用计数,如果别的对象使用当前对象,则该对象的计数器加1,即两个对象同时指向同一块内存。
    copy 对象的属性声明,直接拷贝对象为一个新的副本,而被拷贝的对象的计数器不会加1,即两个对象分别指向不同的内存,只是内存中的数据相同。

    ARC:自动管理内存
    strong 强指针,增加一个对象的引用权限(引用计数加1)
    weak 弱指针,不会增加对象的引用权限,不会影响对象是否释放。
    strong和weak 应用在对象类型的属性里面
    ARC下可以使用retain,copy。

    线程相关
    nonatomic 单线程的程序的属性声明,缺省关键字,单线程下使用,执行效率高。
    atomic 多线程的程序的属性声明,并不建议使用atomic来处理线程安全,执行效率低。

    属性读取权限的关键字
    readwrite 生成getter和setter方法,缺省权限
    readonly 只生成getter方法,即只能访问,不能赋值。


    三、属性关键字的使用:

    非对象类型 使用assign可省略
    对象类型 使用retain/strong
    NSString 使用copy/strong

     例如:

    1 @property (nonatomic, assign) CGFloat duration;
    2 @property (nonatomic, strong) GLProgram *program;
    3 @property (nonatomic, copy) NSString *dirPath;

     

     

  • 相关阅读:
    iOS 静态、全局变量、常量
    原子性atomic/nonatomic
    iOS数组遍历
    iOS开发过程中易犯的小错误
    mac开启Airdrop的硬件要求
    Activity Monitor 闪退 & 无法进入睡眠
    在Linux中连接android设备
    网格布局(GridLayout) 行数与列数
    $符号报not defing 报错
    eclipse鼠标变成十字符号
  • 原文地址:https://www.cnblogs.com/calence/p/6414298.html
Copyright © 2020-2023  润新知