【问题标题】: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返回的对象。结果将取决于属性是否定义为分配/复制/保留。