【问题标题】:Static Analyzer - Memory Leak静态分析器 - 内存泄漏
【发布时间】:2012-05-08 11:14:50
【问题描述】:

在 Xcode 中,通过像 [self.object release] 一样在 dealloc 方法中释放对象时,此行使用静态代码分析器显示为内存泄漏,但在运行仪器时不显示为泄漏。

我的问题是 BWN [self.object release][object release] 有什么不同

请澄清这一点,

提前致谢。

【问题讨论】:

    标签: objective-c ios memory-management static-analysis


    【解决方案1】:

    self.object实际上调用了getter方法([self object]),它返回了实例变量object(或者看是怎么合成的),但是实例变量实际上持有的是保留对象,所以一定要[object release] .将属性合成为:@synthesize object = _object 是一种很好的做法,这样您就不会混淆属性和实例变量 - 您的属性将是 self.object,但实例变量将是 _object,您将调用 @987654328 @

    【讨论】:

      【解决方案2】:

      而不是做-

      [self.object release]
      

      你需要做的-

      self.object = nil; or [object release];
      

      [self.object release] 将释放调用发送到属性getter返回的对象。结果将取决于属性是否定义为分配/复制/保留。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-09
        相关资源
        最近更新 更多