【发布时间】:2013-02-27 15:46:18
【问题描述】:
我遇到了一个问题,我在 cocos2D box2D 项目中使用的对象被垃圾覆盖。经过一番调试,我发现如果下面这行是从:
player = [[[Player alloc] initWithWorld:world atLocation:ccp(playerPositionX, playerPositionY)] autorelease];
到
player = [[Player alloc] initWithWorld:world atLocation:ccp(playerPositionX, playerPositionY)];
然后问题就消失了。这非常令人困惑,因为这段代码和底层类定义或多或少是学习 Cocos2D 书中描述的 SpaceViking 项目的代码副本。
我突然想到,问题可能是当我创建新项目时,我可能选择了自动引用计数,而我可能没有为 SpaceViking 项目选择。我目前正在使用 xcode 4.6,无法弄清楚如何确定该项目中是否使用了 ARC。我去构建设置并搜索自动引用计数,但找不到。
如何确定我的项目是否使用自动引用计数?
【问题讨论】:
-
如果您能够编译对
autorelease的调用,则不能使用 ARC。请注意,您可以为单个文件关闭/打开 ARC。
标签: objective-c memory-management automatic-ref-counting