iPhone Objective C:生成一个新对象并返回它的方法,似乎生成了旧对象



我正在编写一款游戏,我必须创建"障碍",我创建了一个随机生成障碍并返回它们的方法。首先,在方法中,我这样做,

Obstacle newObstacle = [[Obstacle alloc] init];
[newObstacle setFrame:CGRectMake(randX, randY, 50, 50)];
return newObstacle;

,但经过一些调试,我发现它返回相同的对象,每次调用它都有相同的地址,所以我没有得到一个新的唯一对象。

然后我把代码改成:

return [[Obstacle alloc] initWithFrame:CGRectMake(randX, randY, 50, 50)];

但问题似乎仍然存在,这里是最好的部分,当我尝试调试,如果我在循环中设置一个断点,这个方法被调用(这样它在调用生成器方法之前暂停一下),然后我得到新的独特的障碍,但如果我让循环运行并生成它们,我检查数组,发现它们都是相同的对象。

知道这里发生了什么吗?让我知道,如果我需要提供更多的代码。

也许你得写:

Obstacle *newObstacle = [[Obstacle alloc] init];

带*

由于在调试时看到一个新对象,问题一定是在以后使用它时出现的,因此使用的对象是旧的。

最新更新