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;
原文地址:https://www.cnblogs.com/liguangsunls/p/7039903.html