iPhone开发之Objective-C学习(5)
Objective-C中的属性
在C++中,类可以有自己的成员变量, 一般公有成员变量可以直接通过类对象访问或修改, 保护成员变量和私有成员变量通过相应的函数来存取,比如
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | class CPerson { public: int gender; protected: int age; public: int GetAge(){return age;} void SetAge( int newValue){ age = newAge;} }; void test(){ CPerson person; person.gender = 0; person.SetAge(20); printf("性别:%d",person.GetAge() ); printf("年龄:%d",person.gender); } |
这里申明一个人的类CPerson, 其中表示性别的变量 gender是公有成员变量,可以通过类对象peron直接读写,而年龄age则需要通过Set和Get函数来读写。 同样的在Objectivie-C中也有类似的机制, 不过在Object-C中默认的变量都是私有的, 而且所有变量都只能通过存取函数或者访问器来访问,而且在Objective-C中把可以通过访问器访问的变量称为属性, 上面的C++ 代码可以用以下Objective-C 来实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | //.h @interface Person : NSObject { int gender; int age; } @property int gender; -(int) GetAge; -(void) SetAge:(int) newValue; @end //.m @implement Person @synthesize gender; -(int) GetAge { return age; } -(void) SetAge:(int) newValue { age = newValue; } @end |
上面的代码中gender就是Person的属性, 如果有对象person则可以通过几种方式读写gender
- person.gender = GenderMale
- printf("性别 %d", person.gender)
- [person setGender:GenderMale];
- printf("性别 %d", [person getGender];
只要申明了属性, 那么就自动拥有get和set访问器,这里很重要的是@synthesize,通过它才可以自动为属性添加访问器,如果自定义了访问器那么@synthesize将不会再次添加。 age变量则需要通过访问函数来存取。
待续。。。
转载自:FLYBLOG [http://www.flyblog.info]
本文链接地址:http://www.flyblog.info/catprogramming/165.html
相关文章