黑马程序员技术交流社区

标题: @property [打印本页]

作者: 葛先生    时间: 2015-3-23 23:04
标题: @property
)@property 关键字

@property 关键字可以自动生成某个成员变量的setter和getter方法的声明

@property int age;

编译时遇到这一行,则自动扩展成下面两句:

- (void)setAge:(int)age;

- (int)age;

作者: waterfoxjie    时间: 2015-3-23 23:35
XCode 4.4 以上版本就不止了    @property int age;之后会完成三件事:(1)生成一个_age的成员变量    (2)生成_age的setter和getter方法的声明    (3)生成_age的setter和getter方法的实现
作者: hero200521296bj    时间: 2015-3-24 00:22
都是高手啊
作者: 葛先生    时间: 2015-3-24 16:18
waterfoxjie 发表于 2015-3-23 23:35
XCode 4.4 以上版本就不止了    @property int age;之后会完成三件事:(1)生成一个_age的成员变量    (2 ...

哦。这点到忘记了                 。
作者: 葛先生    时间: 2015-3-24 16:21
waterfoxjie 发表于 2015-3-23 23:35
XCode 4.4 以上版本就不止了    @property int age;之后会完成三件事:(1)生成一个_age的成员变量    (2 ...

恩呢,知道了。多谢指教啊。
作者: oucding    时间: 2015-3-24 16:56
我有个疑问,@property int age 的确能省不少语句,但是我要是想在age的setter方法中过滤掉一些不合理的数值,比如年龄出现负数,就是用if语句咋办,那是不是就不能就这样了呀?
作者: waterfoxjie    时间: 2015-3-24 17:05
oucding 发表于 2015-3-24 16:56
我有个疑问,@property int age 的确能省不少语句,但是我要是想在age的setter方法中过滤掉一些不合理的数 ...

那你就重写setter方法呀    写完之后getter方法XCode还是会帮你补上去的    而且成员变量也会帮你定义的
作者: 葛先生    时间: 2015-3-24 17:55
hero200521296bj 发表于 2015-3-24 00:22
都是高手啊

什么高手啊,这都是总结自己被呢。记不住
作者: marswawa    时间: 2015-3-24 17:58
oucding 发表于 2015-3-24 16:56
我有个疑问,@property int age 的确能省不少语句,但是我要是想在age的setter方法中过滤掉一些不合理的数 ...

你手动实现set方法即可,你手动了他就按你的,他只帮你实现你没完成的。
作者: oucding    时间: 2015-3-24 20:21
marswawa 发表于 2015-3-24 17:58
你手动实现set方法即可,你手动了他就按你的,他只帮你实现你没完成的。 ...

这样子啊,谢谢点拨
作者: 葛先生    时间: 2015-3-25 20:47
oucding 发表于 2015-3-24 16:56
我有个疑问,@property int age 的确能省不少语句,但是我要是想在age的setter方法中过滤掉一些不合理的数 ...

能啊,你在实现里面直接重写 age的setter方法不就行了吗
作者: Errors    时间: 2015-3-25 21:23
oucding 发表于 2015-3-24 16:56
我有个疑问,@property int age 的确能省不少语句,但是我要是想在age的setter方法中过滤掉一些不合理的数 ...

只写setter方法,不写getter方法,编译器会帮你补全getter方法,当然如果设置对象为只读,我感觉就不要用@property了
作者: yyx1992    时间: 2015-3-25 21:49
这个确实不错




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2