1.alloc、new或copy來創建一個對象,那么你必須調用release或autorelease。換句話說,不是你創建的,就不用你去釋放。(誰創建誰釋放,對象所有權負責釋放)
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 alloc] initWithInt: i];
[array addObject: n];
[n release];
}
本例中,在for循環里你需要給n發送一個-release消息,因為你需要始終在-alloc之后將n的數量保持為1。這么做的原因是當其通過-addObject:方法被添加至數組中時,數組已經將其保存起來。即使你釋放了n,但是這個數字由於已經保存在數組里,所以不會被釋放。
為了了解這些,假設你自己就是編寫數組類的人。你不希望接收的對象未經你同意就消失,所以你會在對象傳遞進來時,對其發送一個-retain消息。如果他們被刪除,你同時也要對應地發送一個-release消息。在你自己-dealloc時,你也要給你收到的所有對象發送一個-release。