可以说我有以下代码:
@property (nonatomic, retain) *SomeObject foo;
@property (nonatomic, retain) *SomeObject bar;
@synthesize foo, bar;
self.foo = [[SomeObject alloc] init];
self.bar = [[[SomeObject alloc] init] autorelease];
if (self.foo) {
[self.foo release];
self.foo = nil;
}
if (self.bar) {
[self.bar release];
self.bar = nil;
}
self.bar 出现内存泄漏。我不完全确定为什么,但我认为这是因为在调用 [self.bar release] 之后,self.bar 指向的对象被自动释放。当我将 self.bar 设为 nil 时,我们尝试在前一个对象(已自动释放)上调用 release,这会产生错误。这个对吗?此外,是否还有其他内存泄漏,也许是 foo?什么是正确的解决方法?
我应该删除发布声明并将两个属性都归零吗?