我有一个属性与retain属性定义,我正在合成:

@property (nonatomic, retain) UISwitch *mySwitch;

在我的loadView中,我正在这样做:
self.mySwitch = [[UISwitch alloc] initWithFrame:CGRectMake(0, 0, 40, 20)];

最后在我的dealloc中,我这样做:
self.mySwitch = nil;

我使用了一个分配后是否泄漏了该对象(mySwitch)?我应该在分配框架时自动释放它吗?

请提出建议。

最佳答案

该行:

self.mySwitch = [[UISwitch alloc] initWithFrame:CGRectMake(0, 0, 40, 20)];

实际上,调用会保留两次-一次是alloc的调用,另一次是self.mySwitch的分配的调用(这是您应为retain分配给它的任何值指定的属性。)我被告知的解决方法最好是在上添加对autorelease的调用行,使其:
self.mySwitch = [[[UISwitch alloc] initWithFrame:CGRectMake(0, 0, 40, 20)] autorelease];

10-08 17:50