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
个变量吗?如果是,代码应该在何处发布?如果不是,为什么不呢?
答案 0 :(得分:16)
不应发布
static
个变量吗?如果是,代码应该在何处发布?如果不是,为什么不呢?
这取决于。如果变量只初始化一次,并且应该在应用程序的生命周期内保持不变,那么不应该,它不应该被释放(无论如何,当应用程序退出时,它的内存基本上会被释放)。但是,如果静态变量的值发生变化,则是,当静态变量设置为新对象时,应释放上一个对象。
答案 1 :(得分:2)
由于该问题的accepted answer已经陈述,释放静态变量是不可能的。它们就像全局变量一样,只有你的程序才能显示你的函数。
如果由于静态变量所持有的变量而担心膨胀,那么你应该(以某种方式)释放这些引用。因此,例如,如果您的静态变量是NSMutableArray,并且您继续在其中添加对象,它将始终保持增长,除非您在某个时候清空数组。