以下是我的代码:
UIImage *takePhotoImg = [UIImage imageNamed:@"add_pic.png"];
self.takePhoto = [[UIButton alloc] initWithFrame:CGRectMake(120, 100, takePhotoImg.size.width, takePhotoImg.size.height)];
[_takePhoto setImage:takePhotoImg forState:UIControlStateNormal];
[_takePhoto addTarget:self action:@selector(takePhotoBtn) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:_takePhoto];
当我使用analyze时,它会显示以下行:
[_takePhoto setImage:takePhotoImg forState:UIControlStateNormal];
分配对象的潜在泄漏。 我需要添加版本,还是只是忽略? 提前谢谢你
更新: 我确实在我的dealloc中发布了按钮_takePhoto:
-(void)dealloc
{
[_takePhoto release];
[super dealloc];
}
我的财产:
@property(nonatomic,retain)UIButton *takePhoto;
答案 0 :(得分:0)
如果你没有使用ARC,那么是的,你需要释放它。当您将其添加到self.view
的子视图时,self.view
会将其保留,以便按钮不会消失。
如果您不需要访问该按钮而不需要保留引用,则可以在addSubview:
电话后立即将其释放。
但是,takePhoto
似乎是您班级的属性。如果是这种情况,并且您希望保留对该按钮的引用以供日后使用,只需将[_takePhoto release]
调用添加到您的类dealloc
方法即可。这应该压制代码分析警告。
答案 1 :(得分:0)
更改代码:
self.takePhoto = [[UIButton alloc] initWithFrame:CGRectMake(120, 100, takePhotoImg.size.width, takePhotoImg.size.height)];
到
self.takePhoto = [[[UIButton alloc] initWithFrame:CGRectMake(120, 100, takePhotoImg.size.width, takePhotoImg.size.height)] autorelease];
delloc方法中的[_ takePhoto release]用于setter方法中的retain。每次调用self.takePhoto = aNewTakePhote时,aNewTakePhote都会保留一次。