FLYBLOG » 文章 » iPhone开发之Objective-C学习(5)

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

  1. person.gender = GenderMale 
  2. printf("性别 %d", person.gender) 
  3. [person setGender:GenderMale]; 
  4. printf("性别 %d", [person getGender];

只要申明了属性, 那么就自动拥有get和set访问器,这里很重要的是@synthesize,通过它才可以自动为属性添加访问器,如果自定义了访问器那么@synthesize将不会再次添加。 age变量则需要通过访问函数来存取。

 

待续。。。


原创文章如转载,请注明
转载自:FLYBLOG [http://www.flyblog.info]

本文链接地址:http://www.flyblog.info/catprogramming/165.html

标签:    
分类: 编程开发  | 评论: (0)  |  浏览:( 132 )


名称[Name](*):
邮箱[Email](*):
网站链接[Website]:
正文[Message](*):