2011-07-25 37 views
0

我在下面寫我的應用程序的不同類和方法。委託的共享對象是否保留內存?

FruityGameAppDelegate *delegate = (FruityGameAppDelegate *)[[UIApplication sharedApplication] delegate]; 

我想知道,將它佔用的空間(內存),或者如果是,那麼什麼是與這些對象玩所以我的計劃應該不會泄漏內存,或不應該是沉重的合適的方式?

回答

4

不,它不會佔用額外的內存,因爲UIAppDelegate已經存在。你只是給它指定一個指針(想想:你只是把一個路標「委託:這樣」,而不是建立一個新的)。

+0

意味着我不需要任何發佈或autoreleasing? –

+0

正確,因爲您沒有「擁有」該代表。 – DarkDust

0

不,它絕對不佔用任何額外的內存。您已經創建了appdelegate的一個實例,並且Darkdust提到您只是使用指向應用程序委託的同一個唯一實例的不同指針。你所做的只不過是用一個不同的指針來指向對象的現有內存位置。

0

不,它不會佔用額外的內存。當你將它複製到一個新變量時,它將佔用額外的內存。考慮一個場景,你有多個指針指向同一塊內存。在這種情況下,當內存釋放時,所有其他指針變爲dangling。這可能導致應用程序崩潰等嚴重問題。但是,如果您閱讀了關於如何在apples documentation中訪問它們的變量的不同屬性,您將非常清楚如何在應用程序中使用分配的變量。