13-property

1. 我们写1个类.
a. 要先为类写属性.
b. 在声明属性的getter setter
c. 再实现getter setter

2. @property
1). 作用: 自动生成getter、setter方法的声明.
因为是生成方法的声明,所以应该写在@interface类的声明之中.
2). 语法:
@property 数据类型 名称;
@property int age;
3). 原理:
编译器在编译的时候.会根据@property生成getter和setter方法的实现.
@property 数据类型 名称;
生成为:
- (void)set首字母大写的名称:(数据类型)名称;
- (数据类型)名称;
@property int age;
- (void)setAge:(int)age;
- (int)age;

3. 使用@property注意.
1). @property的类型和属性的类型一致.
@property的名称和属性的名称一致(去掉下划线)
不要乱写.
2). @property的名称决定了生成的getter和setter方法的名称.
所以,@property的名称要和属性的名称一致 去掉下划线 否则生成的方法名就是不符合规范的
@property的数据类型决定了生成的setter方法的参数类型 和 getter方法的返回值类型.
3). @property只是生成getter和setter方法的声明. 实现还要自己来. 属性还要自己定义.


4. @property只是生成getter setter 的声明.
@synthesize是生成getter setter 的实现.
这种写法是Xcode4.4之前的写法. 从Xcode4.4以后.Xcode对@property做了1个增强
5. @property增强
只需要写1个@property 编译器就会自动
1) 生成私有属性.
2).生成getter setter的声明.
3).生成getter setter的实现.
@property NSString *name;
做的事情
1). 自动的生成1个私有属性,属性的类型和@property类型一致 属性的名称和@property的名称一致 属性的名称自动的加1个下划线.
2). 自动的生成这个属性的getter setter方法的声明
3). 自动的生成这个属性的getter setter方法的实现.
setter的实现: 直接将参数的值赋值给自动生成的私有属性.
getter的实现: 直接返回生成的私有属性的值.
6.使用注意.
1). @property的类型一定要和属性的类型一致.
名称要和属性的名称一致 只是去掉下划线.
2). 也可以批量声明相同类型的@property
3). @property生成的方法实现没有做任何逻辑验证.
setter: 直接赋值
getter: 直接返回.
所以,我们可以重写setter来自定义验证逻辑.如果重写了setter 还会自动生成getter
如果重写了getter 还会自动生成setter
如果同时重写getter setter 那么就不会自动生成私有属性了.
7. 如果你想为类写1个属性 并且为这个属性封装getter setter
1个@property就搞定.
8. 继承.
父类的@property一样可以被子类继承.
@property生成的属性是私有的 在子类的内部无法直接访问生成的私有属性。
但是可以通过setter getter来访问。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值