Objective c 对象C静态变量内存问题

Objective c 对象C静态变量内存问题,objective-c,memory,static,Objective C,Memory,Static,如你所知,我们在对象c中定义了一个静态变量参数 我关心的是,如何从内存管理视图映射这个静态对象变量 比如说 @interface classA:NSObject + (id) getInstance; @end static ClassA staticObject = nil; @implementation ClassA + (id){ if(staticObject) staticObject = [doinitStuff]; return st

如你所知,我们在对象c中定义了一个静态变量参数

我关心的是,如何从内存管理视图映射这个静态对象变量

比如说

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

static ClassA staticObject = nil;
@implementation ClassA
 + (id){
      if(staticObject)
         staticObject = [doinitStuff];
      return staticObject   
 }
@end
现在的问题是:谁负责保存staticObject内存, 何时发布

我的想法是:

运行时操作系统将监视应用程序,只有当应用程序真正退出时,才会释放该内存。 从运行时视图中,它被保留,并且计数=1//只有一个

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

它与其他变量没有什么不同。如果你想让它继续存在,就保留它。如果没有,则不要(或者,如果保留,则释放/自动释放它)


在应用程序退出时不需要释放内存。当你的应用程序终止时,所有的资源都将被获取。

谢谢bbum,我仍然感到困惑,因为通常,当我们执行init时,总是执行alloc,然后返回它。例如:staticObject=[ClassA alloc]init];内存被分配了,对吗?@Jeff,对。staticObject现在的保留计数至少为1。它现在是正确的,并将在程序的生命周期中继续存在。bbum的观点是,如果你想让它继续存在,只要确保你保留一个retain,无论是通过alloc、copy还是retain。详细说明bbum的评论:请不要在应用程序退出时释放内存。它只是减缓了退出的速度,并打破了突然终止的支持,没有任何收益。