,如果我這樣做可以再次分配釋放的對象嗎?
Object * myObject = [[Object alloc]init];
[myObject release];
有什麼錯在下一行
myObject = [[Object alloc]init];
再次分配我的對象?
,如果我這樣做可以再次分配釋放的對象嗎?
Object * myObject = [[Object alloc]init];
[myObject release];
有什麼錯在下一行
myObject = [[Object alloc]init];
再次分配我的對象?
完全沒問題。 [myobject release];
釋放myObject
指向的對象。
後來,myobject = [[Object alloc] init]
將使myobject
指向另一個對象。
當然是。這種技術在本地方法變量中特別有用,您可以通過將它重新分配爲新對象來重複使用一次聲明的對象。
這是安全的。
原因是myObject
是而不是一個對象,它是一個對象的引用(或指針,如果你想精確)。這意味着你有兩個完全獨立的對象,但是你忘記了對第一個的引用。
這沒有什麼錯。這就是你如何確保你不泄漏你的第一個對象。
但是,您不是在技術上再次分配釋放的對象。你只是再次使用舊的指針。
Object * myObject = [[Object alloc]init];
myObject = [[Object alloc]init];
將導致您創建的第一個對象泄漏。
這是我被大書呆子牧場書教的第一種方式。 –
如果你不想記住釋放重要的內存,你可以使用[[[[object alloc] init] autorelease]。 – Abhinav
它甚至可以節省你在情況下,具有堆棧多個對象實例你做 myobject1 =頁頭初始化 myobject2 =頁頭初始化 你需要的堆棧空間爲每個這樣的對象指針 – Abhinav