Я очень новичок в Objective-C (и программировании вообще ... Я изучал только Python и немного HTML). Я пытаюсь извлечь уроки из учебника here, но я столкнулся с ошибкой, которую я не могу понять.Objective-C Ошибка метода getter
In Fraction.m, under - (void) add: (Fraction *) newFraction Я получаю сообщение об ошибке «Без метода getter для чтения из свойства» на следующих двух строках.
Если бы кто-нибудь мог мне помочь, это было бы здорово! Любые предложения приветствуются.
Спасибо, Адам
КОД:
FractionDemo.m
#import "Fraction.h"
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
Fraction *aFraction = [[Fraction alloc] init];
Fraction *bFraction = [[Fraction alloc] init];
[aFraction setNumerator:1 overDenominator:2];
[bFraction setNumerator:1 overDenominator:3];
[aFraction display]; NSLog(@" + "); [bFraction display]; NSLog(@" = ");
[aFraction add:bFraction];
[aFraction display];
}
return 0;
}
Fraction.h
#import <Foundation/Foundation.h>
@interface Fraction : NSObject {
NSInteger numerator;
NSInteger denominator;
}
- (void)setNumerator:(NSInteger)value;
- (void)setDenominator:(NSInteger)value;
- (void)display;
- (void)setNumerator:(NSInteger)num overDenominator:(NSInteger)denom;
- (void)add:(Fraction *)newFraction;
@end
Fraction.m
#import "Fraction.h"
@implementation Fraction
- (void)setNumerator:(NSInteger)value {
numerator = value;
}
- (void)setDenominator:(NSInteger)value {
denominator = value;
}
- (void)display {
NSString *numeratorString = [[NSString alloc] initWithFormat:@"%ld", (long)numerator];
NSString *denominatorString = [[NSString alloc] initWithFormat:@"%ld", (long)denominator];
NSLog(@"%@/%@", numeratorString, denominatorString);
}
- (void)setNumerator:(NSInteger)num overDenominator:(NSInteger)denom {
self.numerator = num;
self.denominator = denom;
}
- (void)add:(Fraction *)newFraction {
// a/b + c/d = ((a * d) + (b * c))/(b * d)
self.numerator = self.numerator * newFraction.denominator + self.denominator * newFraction.numerator;
self.denominator = self.denominator * newFraction.denominator;
}
@end
Предлагает, если вы знаете, что python подходит для быстрого изучения. –
Можете ли вы попробовать объявить числитель и знаменатель как свойства? @property (неатомный) NSInteger числитель, знаменатель; – Arun
Урок 5 лет. Это эпоха с точки зрения жизненных циклов программного обеспечения. Найдите современный учебник с использованием реальных свойств, предоставляющих неявные сеттеры и геттеры. – vadian