委托的共享对象是否保留内存?

时间:2011-07-25 06:23:33

标签: iphone memory delegates

我在我的应用程序的不同类和方法中写的如下。

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

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

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

不,它肯定不会占用任何额外的内存。您已经创建了appdelegate的实例,并且正如Darkdust所提到的,您只是使用了一个不同的指针,该指针指向应用委托的相同且唯一的实例。你正在做的只是使用不同的指针引用你对象的现有内存位置。

答案 2 :(得分:0)

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