声明部分
@property:自动生成设值和取值方法
实现部分
@synthesize 指令:告诉编译器 为属性生成一对设值方法和取值方法
假如有一个x的属性,则通过@synthesize 会自动实现一个取值方法x,一个设值方法setX
@interface Fraction:NSObject
@property int numerator,denominator;
-(void) print;
-(void) convertToNum;
@end
#import "Fraction.h"
@implementation Fraction
@synthesize numerator,denominator;
-(void) print{
NSLog(@"%i/%i",numerator,denominator);
}
-(double) convertToNum{
if (denominator!=0)
{
return (double) numerator/denominator;
}else{
return NAN;
}
}
int main(int argc, char const *argv[])
{
@autoreleasepool{
Fraction *myFraction = [[Fraction alloc] init];
//访问变量
[myFraction numerator];
//或者
myFraction.numerator;
//设值
[myFraction setNumberator: 5];
//或者
myFraction.numerator = 5;
}
return 0;
}
那么为什么要让编译器自动生成?而不自己手动生成?
因为编译器自动生成的存取方法是高效的,并且在使用多个核心的多台机器上,使用多线程时也可正常运行。