星空网 > 软件开发 > 操作系统

属性(@property)、@synthesize

先前我们学的实例变量是这样的

1 {2   int _age;3   int _height;4   int age;5 }  

后来学属性

1 @property int age;

看到@property 会自动编译生成某个成员变量的setter方法和getter方法的声明

1 - (void)setAge:(int) age;2 - (int)age;

举例:

@property int _age;

就会编译生成

- (void)set_age:(int) age;

- (int)_age;

也就是说你怎么写实例变量就会怎么编译生成,为了生成标准的实例变量的setter方法和getter方法的声明,所以属性不要再加 _ 了,并且setAge大写

 

既然使用@property有了实例变量的setter方法和getter方法的声明,那么实现就是@synthesize property

1 // 后面要求写属性,明确要对哪个属性实现一下setter、getter方法2 @synthesize age

看到@synthesize 会自动编译生成某个成员变量的setter方法和getter方法的实现

1 - (void)setAge:(int)age {2  _age = age; 3 }4 5 - (int)age {6  return age; 7 }

如果硬要去访问 _age 那个成员变量,就

@synthesize age = _age;

这样会自动生成age的setter方法和getter方法的实现,并且会去访问_age这个成员变量

注意:左边的age:要实现的是age的setter方法和getter方法

   右边的age:是在实现里去访问_age这个成员变量,所以这样就将属性和实例变量联系在一起了

   系统规定成员变量要加 _ 修饰

 

上面的@synthesize age;没写后面的成员变量,会默认访问age

此时:会自动访问_age这个成员变量,如果不存在,就会自动生成@private类型的_age实例变量,在延展中声明,是私有的

 

XCode4.n之后 @property 即生成声明有生成实现

1 @property int age;

属性是实例变量_age的一对setter、getter方法的声明和实现

默认情况下,setter、getter方法中的实现会去访问 _ 开头的实例变量

 

学到这里,就清楚了为什么一开始我们学的时候成员变量以 _ 开头,其实系统内部是这样的

 




原标题:属性(@property)、@synthesize

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

sstrke:https://www.goluckyvip.com/tag/25696.html
Stackline:https://www.goluckyvip.com/tag/25698.html
Stadium Goods:https://www.goluckyvip.com/tag/25699.html
美国税收法律:https://www.goluckyvip.com/tag/257.html
Star Seller:https://www.goluckyvip.com/tag/25701.html
StarCat:https://www.goluckyvip.com/tag/25702.html
北京到嵩山自驾游沿途景点 北京距离嵩山有多远:https://www.vstour.cn/a/411244.html
泰国签证有出生地 泰国出生入籍护照:https://www.vstour.cn/a/411245.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流