一、@property @synthesize
这两个关键字是编译器特性,让xcode可以自动生成gettersetter的声明和实现。
(一)@property
@property 关键字可以自动生成某个成员变量的settergetter方法的声明
@property int age;
编译时遇到这一行,则自动扩展成下面两句:
- (void)setAge:(int)age;
- (int)age;
(二)@synthesize
@synthesize关键字帮助生成成员变量的settergetter方法的实现。
语法:@synthesize age=_age;
相当于下面的代码:
- setAge:(int)age
_age=age;
- (int)age
Return _age;
(三)关键字的使用和使用注意
类的声明部分:
![](https://app.yinxiang.com/shard/s13/res/b865b3e3-dfe5-4285-850c-55a8e860905b/041148142839436.png)
类的实现部分:
![](https://app.yinxiang.com/shard/s13/res/41129a10-76ae-4f54-a73c-c6027c72881e/041148236117786.png)
测试程序:
![](https://app.yinxiang.com/shard/s13/res/e7769ce3-098c-48eb-8370-39e9e61527a3/041148312675890.png)
新版本中:
类的声明部分:
![](https://app.yinxiang.com/shard/s13/res/22597cfc-b4c1-47ab-8b1b-66c0166973e0/041148441423857.png)
类的实现部分:
![](https://app.yinxiang.com/shard/s13/res/fcc6e355-8486-464d-abe2-125175bb6053/041148541583052.png)
测试程序:
![](https://app.yinxiang.com/shard/s13/res/f8b13632-1355-4697-bff4-1802b060eda1/041149048617388.png)
(1)在老式的代码中,@property@interface @end@synthesize@implementation @endxcode 4.4@property@property@synthesize
(2)@property int age;这句话完成了成员变量的方法的声明;方法的实现;)生成一个的成员变量。
这种方式生成的成员变量是private
Class isa;
} *id;
局限性:调用一个不存在的方法,编译器会马上报错。