如何释放静态Objective-C变量

时间:2011-04-06 15:12:19

标签: objective-c static release alloc

StackOverflow question "using static keyword in objective-c when defining a cached variable"引用code from Example 4 of Xcode's TableViewSuite定义static NSDateFormatter并调用alloc但从不调用release

不应发布static个变量吗?如果是,代码应该在何处发布?如果不是,为什么不呢?

2 个答案:

答案 0 :(得分:16)

  

不应发布static个变量吗?如果是,代码应该在何处发布?如果不是,为什么不呢?

这取决于。如果变量只初始化一次,并且应该在应用程序的生命周期内保持不变,那么不应该,它不应该被释放(无论如何,当应用程序退出时,它的内存基本上会被释放)。但是,如果静态变量的值发生变化,则是,当静态变量设置为新对象时,应释放上一个对象。

答案 1 :(得分:2)

由于该问题的accepted answer已经陈述,释放静态变量是不可能的。它们就像全局变量一样,只有你的程序才能显示你的函数。

如果由于静态变量所持有的变量而担心膨胀,那么你应该(以某种方式)释放这些引用。因此,例如,如果您的静态变量是NSMutableArray,并且您继续在其中添加对象,它将始终保持增长,除非您在某个时候清空数组。