2
從代碼:數組c在Objective-C保持指針對象已經解除分配
Thing *thingA = [[Thing alloc]init];
// thingA pointer reference 0x00998
Thing *things[] = {thingA};
[thingA release];
// release method of the Thing class correctly invoked
thingA = nil;
// thingA pointer reference now is 0x0
NSLog(@"%d", things[0]);
// odd, because things[0] still maintains the pointer reference 0x00998
爲什麼元件things[0]
保持指針參考0x00998
? 在這種thingA
去dealloc
通過release
後設置爲nil
時刻(引用thingA
現在0x0
)如何things[0]
仍然參考0x0998
? 我認爲things[0]
指針會看起來與0x0
。
事* thingB = [thingA保留];會讓你繼續使用B後釋放一個? – Mark 2011-02-26 03:30:41
@Mark在某種程度上。 'retain'調用會將'retain count'增加到2,'release'調用會將它減少回1.但是你不能單獨釋放A和B:它們是指向同一個對象的引用。也就是說,有兩個引用,但只有一個對象。在你的例子中,它不會被釋放。您可以查看[文檔](http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html)瞭解詳情。 – 2011-02-26 03:35:46
thingB可以存在,甚至錯誤,我沒有設置thingB到零? – Tortuo 2011-02-26 03:44:22