MyClass *var = [[MyClass alloc]initWithSomeNumber:15];
[self addChild:var];
[self removeChild:var cleanup:YES];
我需要打电话release
吗var
?或者该removeChild
方法是否已经解决了这些问题?有没有一种var
无需使用即可创建的方法alloc
?我听说有一个节点的类方法叫做node
. 但它不接受参数(如您所见,我需要传递整数 15)。
MyClass *var = [[MyClass alloc]initWithSomeNumber:15];
[self addChild:var];
[self removeChild:var cleanup:YES];
我需要打电话release
吗var
?或者该removeChild
方法是否已经解决了这些问题?有没有一种var
无需使用即可创建的方法alloc
?我听说有一个节点的类方法叫做node
. 但它不接受参数(如您所见,我需要传递整数 15)。
如果你不使用 ARC,是的,你需要释放它。self
当你添加它时会保留子元素,当你删除它时释放它,这仍然会从你的 alloc/init 调用中留下隐式保留。
是的,它是内存管理策略中定义的规则之一
您拥有您创建的任何对象
您用于alloc
为 分配空间var
,这会将var
引用计数器设置为 1。无论有多少其他对象在此之后(通过发送retain
)声称拥有所有权,您都必须继续发送release
以var
将引用计数器减 1。否则,引用计数器将永远不会达到0 这意味着用于的内存var
永远不会被释放,即最终导致内存泄漏。
MyClass *var = [[MyClass alloc]initWithSomeNumber:15]; // ref count = 1
[self addChild:var]; // ref count ++
[self removeChild:var cleanup:YES]; //ref count--
//ref count is 1
使用 ARC 此链接将对您有所帮助