当我们在对象上调用构造函数时,是否需要在对象上调用retain?我知道当我们调用init方法时,它会创建一个需要保留的自动释放对象吗?
亲切的问候,
答案 0 :(得分:2)
CCObject
的 new
(或子类)分配会使用引用计数器 1 创建对象。当您调用autorelease时,计数器保持 1 ,但计数器 1 的自动释放对象将在更新周期结束时销毁(应用程序初始化或当前帧)。
在一般情况下,您使用create
静态方法创建对象,并且只有当我们需要将对象存储在容器外时才遵循通用规则(retain
)
如果使用new
调用创建对象,则创建的对象已保留一次。您可以在其上调用autorelease
,并遵循通用规则,或者您可以存储它,并手动调用release
来销毁它。
答案 1 :(得分:0)
保留在您:
时被调用另一种情况,即某个对象保留了另一个对象,不应该被删除(动作,转换,运行场景等)
当您将对象添加到数组/节点/ ...时,您不需要自己调用retain,但是当您想要保留对象而不添加到array / scene / ...时,您需要保留它