@property用法:
1,@property是编译器的指令;
2,@property的语法:
@property int age;
(这句话的意思,就是帮我们生成age 的get和set方法的声明)(xcode4.4以前)
-(void)setAge:(int)age;
-(int)age;
3,@property只能写在@interface @end中。
4,xcode4.4以后property做了增强 不但帮助我们自动生成get/set方法的声明还帮助我们自动生成get/set方法的实现 。
5,告诉编译器,要生成的get/set方法声明的成员变量类型是int 。
6,如果没有手动声明成员变量,perperty会在.m文件中自动帮我们生成一个开头的成员变量
(二),@synthesize用法:
1. @synthesize age;
1),生成一个age的私有实例变量;
2),生成实例变量的get和set方法的实现
2. @synthesize 给指定的实例变量赋值。
@synthesize age = _age;
注意;
如果是@synthesize的话, 变量名要先在.h文件中声明。
@property,@synthesize这两个可以配合使用,用于简化set和get方法的定义和实现。
(三),xcode4.4之后
@property的增强用法:
@property int age;这句话干了三件事:
1,在.h文件中生成age的get和set方法的声明;
@interface Person : NSObject
-(void)setAge:(int)age;
-(int)age;
@end
2,在.m文件中生成_age的私有实例变量;(前提是,没有在.h文件中手动声明_age变量)
@implementation Person{
int _age;//不能被子类继承
}
@end
3,在.m文件中生成age的get和set方法的实现;
@implementation Person{
int _age;
}
-(void)setAge:(int)age{
_age = age;
}
-(int)age{
return _age;
}
@end
(四),在增强@property下,重写setter和getter方法:
在使用@property情况下,可以重写getter和setter方法.需要注意的是,当把setter和getter方法都实现了之后,实例变量也需要手动去写.
|