我们常常在类中声明实例变量,并且需要声明设置和访问方法来给这个变量发送消息
我先创建了一个Cat类
// Cat.h
#import <Foundation/Foundation.h>
@interface Cat : NSObject
{
//实例变量的声明
int age;
}
//设置器
-(void)setAge:(int)_age;
//访问器
-(int)age;
@end
打开Cat.m文件
// Cat.m
#import "Cat.h"
@implementation Person
//set方法
-(void)setAge:(int)_age
{
age=_age;
}
//get方法直接用实例变量名作为方法名
-(int)age
{
return age;
}
@end
然后我们在main.m文件中来使用看看
// main.m
#import <Foundation/Foundation.h>
#import "Cat.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
Cat *cat = [[Cat alloc]init];
[cat setAge:7];
NSLog(@"Cat' age is %d",[cat age]);
}
return 0;
}
输出结果为:Cat‘age is7
为了简化我们的代码,我们可以调用@property和@synthesize两个关键字,用法如下
打开Cat.h文件,将原来的set和get方法删去,添加@property
// Cat.h
#import <Foundation/Foundation.h>
@interface Cat : NSObject
{
//实例变量的声明
int age;
}
@property(nonatomic)int age;//括号里面要是换成readonly,那么就只有get方法而没有set方法
@end
打开Cat.m文件,将原来set和get方法的定义删去
// Cat.m
#import "Cat.h"
@implementation Cat
@synthesize age;
@end
再运行一下得到的结果是一样的。
设置器和访问器,最重要的是两个关键字@property雨@synthesize,会自动生成set和get的方法,简化代码