我应该给被移除的孩子打电话吗?

时间:2012-05-23 22:00:52

标签: objective-c ios memory cocos2d-iphone

MyClass *var = [[MyClass alloc]initWithSomeNumber:15];
[self addChild:var];
[self removeChild:var cleanup:YES];

我是否必须为release致电var?或者removeChild方法是否已经处理过这种情况?有没有办法在不必使用var的情况下创建alloc?我听说有一个名为node的节点的类方法。但是它不接受参数(正如你所看到的,我需要传递整数15)。

3 个答案:

答案 0 :(得分:3)

如果你没有使用ARC,是的,你需要发布它。 self将在您添加它时保留子项,并在删除它时释放它,这仍然会从您的alloc / init调用中保留隐式保留。

答案 1 :(得分:2)

是的,这是Memory management policy

中定义的规则之一
  

您拥有自己创建的任何对象

您使用allocvar分配空间,这会将var引用计数器设置为1.无论此后有多少其他对象声明所有权(通过发送{{1}您必须在retain上发送release以将引用计数器递减1.否则,引用计数器将永远不会达到0,这意味着用于var的内存将永远不会被释放,即最终导致内存泄漏。

var

答案 2 :(得分:1)

使用ARC link会帮助您