[英]Should I call release on these cocoa objective-c variables?
[英]Should I call release on a removed child?
MyClass *var = [[MyClass alloc]initWithSomeNumber:15];
[self addChild:var];
[self removeChild:var cleanup:YES];
我是否需要致電var
release
? 還是removeChild
方法已經解決了這個問題? 有沒有一種方法可以創建var
而不必使用alloc
? 我聽說節點有一個名為node
的類方法。 但是它不接受參數(如您所見,我需要傳遞整數15)。
如果您不使用ARC,是的,您需要釋放它。 當添加子對象時, self
將保留子對象,而在刪除子對象時將其釋放,這仍然使alloc / init調用中隱式保留。
是的,這是內存管理策略中定義的規則之一
您擁有自己創建的任何對象
您可以使用alloc
為var
分配空間,這會將var
引用計數器設置為1。無論此后有多少其他對象聲明所有權(通過發送retain
),都必須在var
上發送release
來將引用計數器減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,此鏈接將為您提供幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.