Obj-C は初めてです。独学でクラスに参加。演習用に次の作業コードがありますが、@synthesize を削除し、プログラムを変更して、コンパイラによってインスタンス変数に与えられた新しい名前を処理する必要があります。多くのことを試しました。@synthesize がどのように完全に実装されているか、およびそれを削除する意味がわからないため、常にコンパイラ エラーが発生します。説明ありがとうございます、SO。
main.m
#import "Fraction.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Fraction *aFraction = [[Fraction alloc] init];
[aFraction setTo: 100 over: 200];
[aFraction print];
[aFraction setTo: 1 over: 3];
[aFraction print];
}
return 0;
}
Fraction.h
#import <Foundation/Foundation.h>
@interface Fraction : NSObject
@property int numerator, denominator;
-(void) print;
-(void) setTo: (int) n over: (int) d;
-(double) convertToNum;
@end
Fraction.m
#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;
}
-(void) setTo: (int) n over: (int) d {
numerator = n;
denominator = d;
}
@end