黑马程序员技术交流社区
标题:
@property关键字和@synthesize关键字
[打印本页]
作者:
DummerKnight
时间:
2015-9-15 22:17
标题:
@property关键字和@synthesize关键字
@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方法都实现了之后,实例变量也需要手动去写.
作者:
ZQG
时间:
2015-9-15 22:18
好好好,好久没见这么优秀的帖子
作者:
------
时间:
2015-9-15 22:26
这手打的太辛苦了
作者:
TTsu
时间:
2015-9-15 23:09
杰哥真不容易,一个人要给三个人的号赚取技术分,还要唱三簧,我已经感动的留下了眼泪水
作者:
193936696
时间:
2015-9-15 23:38
学习了学习了
作者:
摆摆
时间:
2015-9-17 09:47
楼主辛苦了,共勉!
作者:
wangganghua
时间:
2015-9-17 22:30
真是不错哦
作者:
wlh0803
时间:
2015-9-18 18:49
学习了
作者:
chensc
时间:
2015-9-18 21:38
学习学习!
作者:
fangshiqi
时间:
2015-9-18 22:08
赞一个。
作者:
摆摆
时间:
2015-9-19 09:59
感谢分享,学习了!
作者:
zzx0826
时间:
2015-9-19 13:35
没什么好说的,一个字,好!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2