1.使用自定义的方法创建get/ set方法 (不实用点语法访问成员变量)
Person.h 文件 :
#import <Foundation/Foundation>
@interface Person:NSObject
{
int _age; //使用age声明成员,方式self.age访问成员变量的误解
}
- (void)setAge:(int)newAge;
-(int)age; //使用age成员的名称,命名get方法
@end
Person.m文件
#import “Person.h”
@implementation Person
- (void)setAge:(int)newAge
{
_age=newAge;
}
- (void)age
{
return _age;
}
@end
main.m 文件
#import <Foundation/Foundation>
#import "Person.h"
int main(int argc, const char *argv[])
{
Person *person=[[Person alloc]init]; //有alloc 必须有release
[person setAge:10];
int age=[person age];
[person release];
return 0;
}
2.使用点语法访问成员
2.1 在OC中点语法不是访问成员变量,而是隐式调用get / set方法 :
person.age=10等效于[person setAge:10];
int age=person.age等效于 [person age];
Person *person=[[Person alloc]init];
//使用点语法访问成员和设置成员变量
person.age=10;
int age=person.age;
NSLog(@"age is %d",age);
通过在get / set方法中打印数据(或设置断点的方式 ), 可以观察到方法的调用 。
- (void)setAge:(int)newAge
{
NSLog(@"调用了setAge方法:%d",newAge);
age=newAge;
}
- (void)age{
NSLog(@"调用了age方法:%d",age);
return age;
}
运行代码的输出为 :
2015-02-29 23:23:59.946 点语法 [2314:303] 调用了 setAge 方法: 10
2015-02-29 23:23:59.967 点语法 [2314:303] 调用了 age 方法: 10
2015-02-29 23:23:59.968 点语法 [2314:303] age is 10