iphone - 创建指向对象的指针后删除对象 [Objective-C]

标签 iphone objective-c ios

<分区>

Possible Duplicate:
Does lastObject in NSMutableArray return a copy of the object?

我正在学习有关 iOS 开发的斯坦福类(class),但我有疑问。 问题是我有一个带有“操作数”(NSNumbers)的数组(operandStack),我想要一个弹出最后一个元素然后从数组中删除它的函数。这就是教程所说的(并且有效):

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

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

对不起我的英语:S 我希望我说清楚了。

谢谢,

卡洛斯

最佳答案

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

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

关于iphone - 创建指向对象的指针后删除对象 [Objective-C],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14102460/

相关文章:

ios - 使用 Sprite 工具包制作自定义场景而不使用自动布局

ios - 如何在 SpriteKit 中为带有物理体的迷宫创建路径

iphone - iPhone SDK中如何将从Sqlite数据库获取的数据转换为NSArray到NSData

iphone - UISlider 自定义缩略图

iphone - UIView 可以知道它何时出现在屏幕上吗

iphone - iOS 如何使 UITabBar 和 UINavigationController 变暗而不隐藏它们?

objective-c - 使用自定义类的 NSMutableArray 作为数据源设置 NSTableView

ios - Objective C 中的蓝牙配对与连接

ios - 将千禧年媒体广告集成到 Swift 应用程序中

ios - 在时间间隔后更改整数值 ios