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;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值