0

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

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

请澄清这一点,

提前致谢。

4

2 回答 2

3

self.object实际上调用getter方法([self object]),它返回实例变量object(或取决于如何合成),但实例变量实际上保存了保留的对象,所以你必须这样做[object release]。将属性与以下内容合成是一种很好的做法:@synthesize object = _object因此您不会混淆属性和实例变量 - 您的属性将是self.object,但实例变量将是_object并且您将调用[_object release];

于 2012-05-08T11:19:05.757 回答
3

而不是做 -

[self.object release]

你需要做 -

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

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

于 2012-05-08T11:21:49.513 回答