Я только недавно сделал переход на Objective-C.Я делаю упражнения из Программирование Кочана в Objective-C 2.0 .В этом конкретном упражнении меня просят изменить метод печати с помощью необязательного аргумента:
-(void)print{
NSLog(@" %i/%i ", numerator, denominator);
}
. Для этого я просто создал другой метод print
, который будет принимать аргумент BOOL
, и изменил существующую печать.метод следующим образом:
-(void)print{
[self printReduced:FALSE];
}
-(void)printReduced:(BOOL)r{
if(r){
[self reduce];
}
NSLog(@" %i/%i ", numerator, denominator);
}
Но для последней части упражнения я должен использовать это BOOL
, чтобы определить, следует ли уменьшить дробь или нет (нет проблем с проверкой флага), нопри уменьшении я не должен изменять исходный объект.Для этого я выделил новый объект Fraction внутри метода printReduced
и выпустил его также до конца метода:
-(void)printReduced:(BOOL)r{
Fraction *printingFraction = [[Fraction alloc] init];
[printingFraction setTo:numerator over:denominator];
if(r){
[printingFraction reduce];
}
NSLog(@" %i/%i ",[printingFraction numerator], [printingFraction denominator]);
[printingFraction release];
}
Мой вопрос: правильно ли создавать и освобождать объекты в рамках данного метода?сюда?Похоже, это прекрасно работает без изменения оригинальной дроби, но правильный ли это подход?