我有一个属性与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];