【问题标题】:How to release static Objective-C variables如何释放静态 Objective-C 变量
【发布时间】:2011-07-30 22:25:32
【问题描述】:

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 变量吗?如果是,它们应该在代码的哪里发布?如果没有,为什么不呢?

【问题讨论】:

    标签: objective-c static release alloc


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 完全可以释放静态变量。
      • @zoul:值得指出的是,在发布后将其设置为nil 是个好主意,否则(在链接的代码示例中)您最终会过度发布。
      • @zoul:我的意思是说不可能摆脱 静态变量,该变量的生命周期取决于应用程序的长度(而不是任何局部变量或 ivars)。完全可以释放静态变量持有的
      猜你喜欢
      • 2011-01-26
      • 1970-01-01
      • 2011-12-18
      • 2012-07-14
      • 1970-01-01
      • 1970-01-01
      • 2011-08-27
      • 1970-01-01
      • 2013-04-01
      相关资源
      最近更新 更多