在以前学习C++,Java面向对象语言的时候,类Class中会有成员变量这个概念,同时这个成员变量也可称之为这个类的属性,我们成员变量和属性当成一回事。但是来到OC中,情况就完全不同了。成员变量和属性是两个截然不同的概念,我们来慢慢研究。
(1)在新建完类后,在People.h中加入如下代码:
@interface People : NSObject
{
NSString *_peopleName;
int _peopleAge;
int _peopleSex;
}
@end
分析:此时的_peopleName,_peopleAge,_peopleSex都是类的成员变量,只能在类内进行调用。
(2)我们在People.m(People类内)文件中对成员变量进行访问,进行赋值。注意此时在类外main.m文件中无法访问这几个成员变量。
#import "People.h"
@implementation People
-(instancetype) init
{
self =[super init];
if (self) {
_peopleName=@"张三";
_peopleAge=23;
_peopleSex=1;
}
return self;
}
@end
(3)我们使用get,set方法来实现对这些成员变量的操作:在People.h文件中对方法进行声明:
-(void)setName:(NSString *)name;
-(NSString *)getName;
(4)然后在People.m中实现该方法:setName()表示对 _peopleName赋值,getName()表示获得_peopleName的值。
-(void)setName:(NSString *)name{
_peopleName=name;
}
-(NSString *)getName{
return _peopleName;
}
(5)在main.m中调用这两个方法:
People *p1 = [[People alloc] init];//OC正规的创建对象方式;
[p1 setName:@"chenyufeng"];//对成员变量赋值,注意两边要使用[];
NSLog(@"peopleName=%@",[p1 getName]);//获得成员变量的值;
(6)输出结果:
。
表示在类外main.m中成功对只有在类内才能访问的成员变量进行赋值和访问。关于属性,我们下一节再讨论。
github主页:https://github.com/chenyufeng1991 。欢迎大家访问!