创build一个指针后删除一个对象

可能重复:
在NSMutableArray中的lastObject是否返回对象的副本?

我跟随斯坦福大学iOS开发课程,我有一个疑问。 问题是我有一个数组(operandStack)与“操作数”(NSNumbers),我想要一个function,popup最后一个元素,然后从数组中删除它。 这是什么教程(它的工作原理):

- (double)popOperand { NSNumber *operand = [self.operandStack lastObject]; if(operand) [self.operandStack removeLastObject]; return [operand doubleValue]; } 

我的问题是:如果使用NSNumber *操作数,我们只是“指向”最后一个对象,在下一行我们删除最后一个对象,那么我们如何返回呢? 我的意思是,如果我们删除最后一个对象,操作数只是指向那个对象,那么操作数应该指向没有,所以我不明白怎么可能返回操作数…我会理解代码if操作数是数组的最后一个对象的副本,但事实并非如此

对不起,我的英语:希望我明确自己。

谢谢,

卡洛斯

removeLastObject方法从数组中删除对象,而不是从内存中删除对象。 从数组中删除对象之前,将其分配给本地variables。 使用ARC进行编译时,指向对象的局部variables具有__strong的隐式生命周期限定符。

由于在将对象从数组中移除之前将强引用添加到对象,因此您的方法暂时取得它的所有权。 即使该方法返回对象本身而不是它的值,这仍然可以正常工作,因为ARC会在方法的末尾插入autorelease调用而不是release