我正在尝试从iTunes U iPhone编程讲座中学习。ARC与非ARC removeLastObject方法
有,我在关于以下方法的代码的问题:
+(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;
}
如何topOfStack即使removeLastObject已经调用它仍然可以访问。在过去,removeLastObject会向已删除的对象发送一个版本,那么topOfStack如何仍然有效?我猜这是与ARC相关的,但我不确定。