私は最近、Objective-Cに移行しました。私はKochan's Programming in Objective-C 2.0からいくつかの練習をしています。私は単純に次のように既存の印刷方法をBOOL
引数を取り、変更となる別のprint
メソッドを作成した。このためObjective-Cのメソッド内のオブジェクトの割り当てと解放?
-(void)print{
NSLog(@" %i/%i ", numerator, denominator);
}
:
この特定の演習では、私は印刷と方法とオプションの引数を修正することを求めています-(void)print{
[self printReduced:FALSE];
}
-(void)printReduced:(BOOL)r{
if(r){
[self reduce];
}
NSLog(@" %i/%i ", numerator, denominator);
}
しかし、練習の最後の部分では、フラクションを減らすべきかどうかを判断するためにそのBOOL
を使用することになっています(フラグをテストするのに問題はありません)。しかし、縮小しても、オブジェクト。このために私は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];
}
私の質問です:それは右のこの方法を作成し、指定されたメソッドwhithinオブジェクトを解放しますか?これは、オリジナルのFractionを変更することなく、うまく動作するようですが、これは正しいアプローチですか?
あなたは 'retain'の代わりに' release'と言っていたと思います。 –
@Jacob:良いキャッチが変更されました。 –