一、点语法及其好处
1、方便程序员能够很快的转到O-C上来
2、让程序设计简单化
3、隐藏了内存管理细节
4、隐藏了多线程、同步、加锁细
节
5、点语法的使用
Dog *dog=[[Dog aloc] init]; [dog setAge:100]; int dogAge=[dog age]; NSLog(@"Dog Age is %d",dogAge);
下面的代码用点语法
dog.age=200;//调用setAge方法 dogAge=dog.age;//调用age方法
这里的点不上调用的dog这个对象的字段,而且在调用方法。dog.age是在调用setAge这个方法,下面的dog.age
是在调用age这个方法。
点语法是编译器级别,编译器会把dog.age=200,展开成[dog
setAge:200];会把dogAge=dog.age,展开成[dog age];函数调用
6、点语法setter和getter规范
setter函数展开规范
dog.age=200;[dog
setAge:200];
getter函数展开规范
int dogAge=dog.age;int
dogAge=[dog age];
项目当中如果想用点语法,必须在项目中的.h文件和.m文件中声明和实现setAge和age方法,也就是说要声明和实现getter和setter方法。
二、@property @synthesize如何使用
@property是让编译器自动产生函数申明,不再写下面2行代码
-(void) setAge:(int)newAge; -(void) age;
只需要下列一行就可以代替
@property int age;
@synthesize
意思是合成,@synthesize就是编译器自动实现getter和setter函数,不用写下列代码:
- (void) setAge:(int)newAge { age=newAge; } -(int) age { return age; }
只需要写@synthesize age;
三、@property @synthesize编译器如何展开
@property
@synthesize只能展开成标准的模板,如果想在getter和setter函数中增加内容,则不能用@synthesize表示方法。
四、如何使用点语法
self.age放在=号的左边和右边是不一样的,放在左边是表示调用setter函数,放在右边表示调用getter函数。
为了区别开age,我们会对dog类做一些改动
@interface Dog:NSObject { int _age;//改动了以前是int age; } @property int age; @end; #import "Dog.h" @implementation Dog @synthesize age=_age; @end
五、@property其他属性
readwrite(缺省),readonly:表示属性是可读写的,也就是说可以使用getter和setter,而readonly只能使用getter
assign(缺省),retain,copy:表示属性如何存储
nonatomic:表示不用考虑线程安全问题