2011-01-07 26 views
1

如你所知,我们在对象C定义静态变量参数,对象C的静态变量存储问题

我就什么,如何从存储管理视图这个静态对象变量映射。

例如

@interface classA:NSObject 
+ (id) getInstance; 
@end 

static ClassA staticObject = nil; 
@implementation ClassA 
+ (id){ 
     if(staticObject) 
     staticObject = [doinitStuff]; 
     return staticObject 
} 
@end 

现在的问题是:谁负责持有staticObject内存, 时,它会被释放。

我在想什么:

运行OS将监视应用程序,只有当应用程序真正退出,这种记忆会被释放。 从RUNtime视图中,它被保留并且count = 1; //只有1

任何想法都将不胜感激。 谢谢。

回答

2

它与任何其他变量没有区别。如果你想要它坚持,retain它。否则,不要(或者,如果保留,释放/自动释放它)。

在应用程序退出时无需释放内存。当你的应用程序终止时,所有资源都将被收割。

+0

感谢bbum,我仍然感到困惑,因为通常情况下,当我们执行init时,总是执行alloc,然后返回它。例如:staticObject = [ClassA alloc] init];内存被分配了,对吧? – Jeff 2011-01-07 20:50:28