2013-02-19 88 views
0

我编写iOS应用程序。我有班和班。 Class Car有一个属性Wheel(在这个例子中,实际上,Car有多个车轮)。分配属性时泄漏内存工具无法检测到泄漏,因此泄漏是否存在?

在类汽车:

@property (nonatomic, retain) Wheel * wheel; //because it has retain, so I delete wheel in dealloc function. 

当我具有Car对象,我初始化轮。

Car* car = [[Car alloc] init]; 
car.wheel = [[Wheel alloc] init]; 

我认为代码使泄漏内存,但在仪表工具检漏仪工具XCode中没有检测到它。那么,发生了什么?可能是我错了吗?

感谢您的帮助。

+1

这是编译ARC启用?另外,你的'dealloc'是什么样的? – Hyperbole 2013-02-19 04:02:14

+0

@Hyperbole - 关于ARC的一个很好的问题,虽然不会有dealloc调用或释放调用在启用时抛出错误? – 2013-02-19 04:05:14

+1

@XenElement当然,但他没有说他正在调用'release',他说他删除了它,可以解释为'self.wheel = nil;'或'_wheel = nil;',这不是编译器错误在ARC下。 – Hyperbole 2013-02-19 04:06:22

回答

1

既然你宣布你wheel财产保留给它一个对象,发送autorelease邮件到您的Wheel对象:

Car* car = [[Car alloc] init]; 
car.wheel = [[[Wheel alloc] init] autorelease]; 
+0

我的想法和你一样,但我不确定。与你和其他人回答,我可以肯定。谢谢。 – huync 2013-02-19 06:52:45

+0

@huync这是你想要的答案。禁用ARC是短视的。阅读[内存管理指南](https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/MemoryMgmt.html)。 – Hyperbole 2013-02-19 14:50:11