示例一:利用@property和@synthesize指令自动生成getter和setter
Fraction.h
#import <Foundation/Foundation.h> @interface Fraction : NSObject //@property指令让编译器自动为numerator、denominator生成getter、setter方法 @property int numerator, denominator; -(void) print; -(double) convertToNum; @end
Fraction.m
#import "Fraction.h"
@implementation Fraction
//@synthesize与@property指令配合使用来自动生成getter、setter方法
//会自动生成设值方法setNumerator、setDenominator
//会自动生成取值方法numerator、denominator
@synthesize numerator, denominator;
-(void) print
{
NSLog(@"%i/%i", numerator, denominator);
}
-(double) convertToNum
{
if (denominator != 0)
return (double) numerator / denominator;
else
return NAN;
}
@end
main.m
#import <Foundation/Foundation.h>
#import "Fraction.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Fraction *myFraction = [[Fraction alloc] init];
//[myFraction setNumerator: 1];
//[myFraction setDenominator: 3];
//使用点语法设值(即,调用setter方法),与上面两句代码等价
myFraction.numerator = 1;
myFraction.denominator = 3;
NSLog(@"The numerator is %i, and the denominator is %i",
myFraction.numerator, myFraction.denominator);
}
return 0;
}
运行测试
示例二:省略@synthesize指令
Fraction.h
#import <Foundation/Foundation.h> @interface Fraction : NSObject //@property指令让编译器自动为numerator、denominator生成getter、setter方法 @property int numerator, denominator; -(void) print; -(double) convertToNum; @end
Fraction.m
#import "Fraction.h"
@implementation Fraction
//@synthesize与@property指令配合使用来自动生成getter、setter方法
//会自动生成设值方法setNumerator、setDenominator
//会自动生成取值方法numerator、denominator
//@synthesize numerator, denominator;
-(void) print
{
//如果省略了@synthesize指令,那么实例变量前要加下画线。
NSLog(@"%i/%i", _numerator, _denominator);
}
-(double) convertToNum
{
//如果省略了@synthesize指令,那么实例变量前要加下画线。
if (_denominator != 0)
return (double) _numerator / _denominator;
else
return NAN;
}
@end
main.m
#import <Foundation/Foundation.h>
#import "Fraction.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Fraction *myFraction = [[Fraction alloc] init];
//[myFraction setNumerator: 1];
//[myFraction setDenominator: 3];
//使用点语法设值(即,调用setter方法),与上面两句代码等价
myFraction.numerator = 1;
myFraction.denominator = 3;
NSLog(@"The numerator is %i, and the denominator is %i",
myFraction.numerator, myFraction.denominator);
}
return 0;
}