黑马程序员技术交流社区

标题: 为什只使用@property int age,会生成带下划线的成员变量呢?为什么不是age? [打印本页]

作者: 菜鸟八哥    时间: 2015-1-13 22:13
标题: 为什只使用@property int age,会生成带下划线的成员变量呢?为什么不是age?
#import<Foundation/Foundation.h>

@interface Person:NSObject
{
int _age;
double _height;

}
//@property:可以自动生成某个成员变量的set和get方法的声明
@property int age;
//-(void)setAge:(int)age;
//-(int)age;
@property double height;
@end

@implementation

//@synthesize自动生成age的set和get实现


@synthesize age = _age //注意:如果成员变量_age不存在,就会自动生成@private类型的变量_age;
//如果直接@synthesize age;则调用set和set方法会访问成员变量age,如果没有该age,则会自动创建@private类型的成员变量age ;
//这样也是可以的,写成一行:@synthesize age= _age, name=_name;

/*
-(void)setAge:(int)age
{
-age=age

}

-(int)age
{

return _age;
}
*/

@end



int main()
{
Person *p=[Person new];
//类的声明中使用了@property替代成员变量的set方法和get方法,但主函数中调用set和get方法不受影响,依然和原来一样
p.age = 10;// [p setAge:10];

return 0;
}




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