如何释放静态的Objective-C变量

15
2个回答

16
静态变量应该释放吗?如果需要,代码中应该在哪里释放?如果不需要,为什么?
答:这要看情况。如果变量只初始化一次,并且需要在应用程序的整个生命周期内保留,则不需要释放它(因为在应用程序退出时,其内存本质上将被释放)。但是,如果静态变量的值发生更改,则应该在将其设置为新对象时释放之前的对象。

2
作为该问题的被接受的答案已经说明,释放静态变量是不可能的。它们就像全局变量一样,只能在函数内部可见,并且具有与程序一样长的生命周期。
如果您担心由静态变量持有的变量导致膨胀,那么您应该(以某种方式)释放这些引用。例如,如果您的静态变量是NSMutableArray,并且您不断添加对象,它将始终保持增长,除非您在某个时候清空数组。

5
释放静态变量是完全可行的。 - zoul
1
@zoul:值得一提的是,在释放后将其设置为nil是一个好主意,否则(在链接的代码示例中)你会出现过度释放的情况。 - jscs
@zoul:我的意思是说,无法摆脱静态变量,该变量的生命周期与应用程序的长度相同(与任何本地变量或实例变量相反)。 完全可以释放静态变量所持有的 - paracycle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接