2011-07-25 34 views
0

我在下面写我的应用程序的不同类和方法。委托的共享对象是否保留内存?

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

我想知道,将它占用的空间(内存),或者如果是,那么什么是与这些对象玩所以我的计划应该不会泄漏内存,或不应该是沉重的合适的方式?

回答

4

不,它不会占用额外的内存,因为UIAppDelegate已经存在。你只是给它指定一个指针(想想:你只是把一个路标“委托:这样”,而不是建立一个新的)。

+0

意味着我不需要任何发布或autoreleasing? –

+0

正确,因为您没有“拥有”该代表。 – DarkDust

0

不,它绝对不占用任何额外的内存。您已经创建了appdelegate的一个实例,并且Darkdust提到您只是使用指向应用程序委托的同一个唯一实例的不同指针。你所做的只不过是用一个不同的指针来指向对象的现有内存位置。

0

不,它不会占用额外的内存。当你将它复制到一个新变量时,它将占用额外的内存。考虑一个场景,你有多个指针指向同一块内存。在这种情况下,当内存释放时,所有其他指针变为dangling。这可能导致应用程序崩溃等严重问题。但是,如果您阅读了关于如何在apples documentation中访问它们的变量的不同属性,您将非常清楚如何在应用程序中使用分配的变量。