• OC中对于属性的总结(@property)


    在没有属性之前:
    对成员变量进行改动都要用到设置器:setter来改动

        Person *per =[[Person alloc] init];
         对象通过设置器对成员变量内容进行修该
        [per  setName:@"你好"];

    要通过訪问器:getter来进行取值
    属性的出现 ,简化了代码

    1.属性

    属性是写在.h中
    在XCode4.5之后,属性一共能够做了三件事:
    1.声明了设置器:setter和訪问器:getter
    2.实现了设置器和訪问器
    3.声明了一个成员变量,成员变量命名会在属性名前面加一个下划线

    (总结)
    详细的数据存储还是有成员变量来完毕,属性值只是帮助程序猿完毕一些繁琐的工作,简化代码

    属性用 @property 来表示

    样例:比方定义一个学生类的年龄对象
    首先创建一个学生类,之后直接用属性来创建年龄对象
    在学生类的.h文件里:
    @property NSInteger age;
    这样一个年龄对象就建好了
    一个属性完毕了在对象.h中的声明,完毕了setter,getter在.h中的声明,完毕了setter,getter在.m中的实现三件事

    2.属性的属性

    (1) 读写的控制: readonly和readwrite

    1. readonly:仅仅读:
      设置之后,属性就没有setter,在设置了仅仅读之后,就不能够对成员变量进行改动了
    2. readwrite:读写:
      能够进行訪问与读取

    3.原子性的控制

    在整个过程中系统通过原子性 atomic来监控实物在整个过程中偶遇没有完毕,可是对于我们来讲,我们仅仅是对数据进行简单的赋值,一般我们都会用nanatomic,不进行监控
    // 通过原子性atomic来监控实物在整个过程中有没有完毕,可是一般来讲我们就是对数据的简单赋值,一般我们这部分用nonatomic

    (atomic)
    @property (atomic)NSString *sex;
    (nonatomic)
    @property(nonatomic)NSString *color;

    4.语义设置

    copy , assign , retain

    1.retain一般用在对象类型, 比方我们自己写的类,还有数组NSArray中会用到

    2.assgin 一般用在NSInteger和CGFloat中,由于他们在栈区,不须要内存管理,所以用assgin

    3.copy 一般仅仅会用在字符串中

    样例:
    @property(nonatomic ,copy)NSString *color;
    @property(nonatomic ,assign)NSInteger age;
    @property(nonatomic ,assign)CGFloat score;
    @property(nonatomic ,retain)NSArray *arr;

    注意:

    在XCode4.5版本号之前另一个关键词的定义
    在.m文件里须要有一个关键词@sythesize才干实现setter和getter

    格式 :关键词  属性名=成员变量名 
    @synthesize name = _name;
  • 相关阅读:
    MFC对话框控件数据提取之DoDataExchange()
    慎用USES_CONVERSION
    Oracle OCP 11G 051(61题版本)答案解析目录
    OCP-1Z0-新051-61题版本-61
    OCP-1Z0-新051-61题版本-60
    OCP-1Z0-新051-61题版本-59
    OCP-1Z0-新051-61题版本-58
    OCP-1Z0-新051-61题版本-57
    OCP-1Z0-新051-61题版本-55
    OCP-1Z0-新051-61题版本-56
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7039903.html
Copyright © 2020-2023  润新知