19-oc@property和@synthesize

 

@porperty

@porperty是一个编译器指令

 

在Xocde4.4之前, 可以使用@porperty来代替getter/setter方法的声明, 也就是说我们只需要写上@porperty就不用写getter/setter方法的声明

 

2.编译器只要看到@property,就知道我们要生成某一个属性的getter/setter方法的声明

 

@propertyde格式

@property数据类型变量名

 


property增强

 

从Xcode4.4以后,对@property进行了增强, 以后只要利用一个@property就可以同时生成setter/getter方法的声明和实现

 

如果没有告诉@property要将传入的参数赋值给谁, 默认@property会将传入的属性赋值给_开头的成员变量

 

@property的使用场景

如果不想对传入的数据进行过滤, 仅仅是提供方法给外界操作成员变量, 那么就可以使用@property ,并且系统会自动给我们生成一个_开头的成员变量

 

使用property增强后,什么时候要重写getter/setter方法

使用property增强,只会生成最简单的getter/setter方法的声明和实现, 并不会对传入的数据进行过滤

 

如果想对传入的数据进行过滤, 那么我们就必须重写getter/setter方法

 

重写getter/setter方法有哪些注意点

如果重写了setter方法, 那么property就只会生成getter方法

如果重写了getter方法, 那么property就只会生成setter方法

如果同时重写了getter/setter方法, 那么property就不会自动帮我们生成私有的成员变量

 


 

@property修饰符

增强@property使用修饰符后的的格式

 格式:

@property(属性修饰符) 数据类型变量名称;

 

@property 有哪些修饰符?各有什么作用?

1.readwrite: 代表既生成getter方法 , 也生成setter方法

默认情况下@property就是readwrite的

@property(readwrite) int age;

2.readonly: 代表只生成getter方法不生成setter方法

@property(readonly) NSString * name;

3.给getter方法起了一个别名为abc

- (void)setHeight:(double)height;

- (double)height;

给getter方法起了一个别名为abc

- (void)setHeight:(double)height;

- (double)abc;

@property(getter=abc) double height;

4.给setter方法起了一个别名为tiZhong

- (void)setWeight:(double)weight;

- (void)tiZhong:(double)weight;

@property(setter=tiZhong:) double weight;

程序员之间有一个约定, 一般情况下获取BOOL类型的属性的值, 我们都会将获取的方法名称改为isXXX

@property(getter=isMarried) BOOL married;

 


 

@synthesize

synthesize是一个编译器指令, 它可以简化我们getter/setter方法的实现

@synthesize age = _age; 在给age赋值时,编译器做了哪些事

 

@synthesize age = _age;

1.在@synthesize后面的age,告诉编译器, 需要实现哪个@property生成的声明

 

2.告诉@synthesize, 需要将传入的值赋值给谁和返回谁的值给调用者

 

如果在@synthesize后面没有告诉系统将传入的值赋值给谁, 系统默认会赋值给和@synthesize后面写得名称相同的成员变量@synthesize age;


 

转载于:https://www.cnblogs.com/wc-Home/p/5243179.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值