zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    Java基础教程:面向对象编程[3]
    Java拓展教程:文件DES加解密
    JavaScript:学习笔记(4)——This关键字
    jQuery:[2]百度地图开发平台实战
    Android开发——减小APK大小
    玩转ButterKnife注入框架
    Java技术——多态的实现原理
    RxAndroid结合Retrofit,看看谁才是最佳拍档!
    Android开发——AsyncTask的使用以及源码解析
    10本比较鸡肋的技术类书籍,简要回顾
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7039903.html
Copyright © 2011-2022 走看看