OC 內存管理法則


1.allocnewcopy來創建一個對象,那么你必須調用releaseautorelease。換句話說,不是你創建的,就不用你去釋放。(誰創建誰釋放,對象所有權負責釋放)

2.如果你在一個class的某個方法中alloc一個成員對象,且沒有調用autorelease或及時releaase, 那么你需要在這個類的dealloc方法中調用release;如果調用 了autorelease,那么在dealloc方法中什么 都不需要做。

3.盡量用sel.xxx = xxx來對對象進行賦值操作,在對象不用的時候也可以用self.xxx = nil來對其釋放

注意下面這個例子里,你無需保留新建的數值,因為數組會幫你保留。

 NSMutableArray *array;

int i;

// …

for (i = 0; i < 10; i++) 

{

NSNumber *n = [[NSNumber allocinitWithInt: i];

[array addObject: n];

[n release];

}

本例中,在for循環里你需要給n發送一個-release消息,因為你需要始終在-alloc之后將n的數量保持為1。這么做的原因是當其通過-addObject:方法被添加至數組中時,數組已經將其保存起來。即使你釋放了n,但是這個數字由於已經保存在數組里,所以不會被釋放。

為了了解這些,假設你自己就是編寫數組類的人。你不希望接收的對象未經你同意就消失,所以你會在對象傳遞進來時,對其發送一個-retain消息。如果他們被刪除,你同時也要對應地發送一個-release消息。在你自己-dealloc時,你也要給你收到的所有對象發送一個-release


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM