objective-c中的@property和@synthesize


一、@property用法
  • @property会自动生成某个成员变量的setter和getter声明;
  • 用@property int age;就可以代替下面的两行:
- (void) intAge:(int)age;  // setter
- (int) age;    // getter
  • @property int age;一般只写age就行,不要写_age,因为这样生成的set方法名字是set_age,调用容易出错,所以只在成员变量里面写_age,@property后面只写 int age ,即可。
  • @property新特性:
  • Xcode较新版本4.X之后,@property就独揽了@synthesize的功能,也就是说只有@property就可以同时生成setter和getter的声明的实现。
  • 默认情况下,setter和getter方法中的实现,会去访问下划线_开头的变量。
二、@synthesize用法
  • @synthesize用在@implementation中
  • 用来自动生成setter和getter的实现
  • 用@synthesize age = _age;就可以代替下面两段代码:
- ( int )age{ 
    return _age;
    }
- (void) setAge : (int )age{  
_age = age;
}
@synthesize的细节:
  • @synthesize age = _age;
setter和getter实现中会访问成员变量_age
如果成员变量_age不存在,那就会自动生成一个@private的成员变量_age
  • @synthesize age;
setter和getter实现中会访问成员变量age
如果成员变量age不在,就会自动生成一个@private的成员变量age
  • 手动实现:
若手动实现了setter方法,编译器就只会自动生成getter方法
若手动实现了getter方法,编译器就只会自动生成setter方法
若同时实现了setter和getter方法,编译器就不会自动生成不存在的成员变量

码还可以精简到只写一行@property int age;【这时候系统做三件事:1,自动生成成员变量;2,自动生成age的set和get的声明。3,自动生成age的set和get的实现方法。不过这个时候的成员变量是私有的。子类不能访问】

















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值