15

StackOverflow 问题“在定义缓存变量时在 Objective-c 中使用 static 关键字”引用了 Xcode 的 TableViewSuite 示例 4 中的代码,该代码定义了 astatic NSDateFormatter并调用alloc但从不调用release

static应该释放变量吗?如果是,它们应该在代码的哪里发布?如果没有,为什么不呢?

4

2 回答 2

16

static应该释放变量吗?如果是,它们应该在代码的哪里发布?如果没有,为什么不呢?

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

于 2011-04-06T15:19:22.433 回答
2

正如对该问题的公认答案已经表明,释放静态变量是不可能的。它们就像全局变量一样,只有在你的程序的生命周期内才对你的函数可见。

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

于 2011-04-06T15:19:59.497 回答