在 Xcode 中,通过像 [self.object release] 一样在 dealloc 方法中释放对象时,此行使用静态代码分析器显示为内存泄漏,但在运行仪器时不显示为泄漏。
我的问题是BWN有什么不同[self.object release]
,只是[object release]
请澄清这一点,
提前致谢。
在 Xcode 中,通过像 [self.object release] 一样在 dealloc 方法中释放对象时,此行使用静态代码分析器显示为内存泄漏,但在运行仪器时不显示为泄漏。
我的问题是BWN有什么不同[self.object release]
,只是[object release]
请澄清这一点,
提前致谢。
self.object
实际上调用getter方法([self object]
),它返回实例变量object
(或取决于如何合成),但实例变量实际上保存了保留的对象,所以你必须这样做[object release]
。将属性与以下内容合成是一种很好的做法:@synthesize object = _object
因此您不会混淆属性和实例变量 - 您的属性将是self.object
,但实例变量将是_object
并且您将调用[_object release];
而不是做 -
[self.object release]
你需要做 -
self.object = nil; or [object release];
[self.object release] 将释放调用发送到由属性获取器返回的对象。结果将取决于属性是否定义为分配/复制/保留。