私はiTunesUiPhoneプログラミングの講義から学ぼうとしています。
次のメソッドコードに関して私が持っている質問があります:
+(double) popOperandOffStack:(NSMutableArray *) stack{
double result = 0;
id topOfStack = [stack lastObject];
if (topOfStack) [stack removeLastObject];
if ([topOfStack isKindOfClass:[NSNumber class]]){
result = [topOfStack doubleValue];
}
else if ([topOfStack isKindOfClass:[NSString class]]){
if ([topOfStack isEqualToString:@"+"]){
result = [self popOperandOffStack:stack] + [self popOperandOffStack:stack];
}
if ([topOfStack isEqualToString:@"-"]){
result = [self popOperandOffStack:stack] - [self popOperandOffStack:stack];
}
if ([topOfStack isEqualToString:@"*"]){
result = [self popOperandOffStack:stack] * [self popOperandOffStack:stack];
}
if ([topOfStack isEqualToString:@"/"]){
result = [self popOperandOffStack:stack] / [self popOperandOffStack:stack];
}
}
return result;
}
removeLastObjectがすでに呼び出されている場合でも、topOfStackにはどのようにアクセスできますか。以前は、removeLastObjectは削除されたオブジェクトにリリースを送信していましたが、topOfStackはどのように有効ですか?これはARCに関連したものだと思いますが、よくわかりません。