initWithFrame中的内存泄漏

See*_*ega 0 iphone memory-leaks objective-c

我使用UIView子类与其他视图的NSMutableArray来指示值为条形.
我在initWithFrame中初始化它.仪器告诉我创建和删除我的UIView子类后,NSMutableArray的alloc有一个泄漏.
这就是为什么我用if框架它以避免多个对象.但没有帮助

- (id) initWithFrame :(CGRect)frame
{
self = [super initWithFrame:frame];
if (self.uiValueSubviews == nil){
    self.uiValueSubviews = [[NSMutableArray alloc]init];
}
return self;
}

- (void)dealloc {
[self.uiValueSubviews release];
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud)

我对dealloc做错了吗?
谢谢你的帮助

Joe*_*Joe 5

我看到涉及您的财产的内存管理的两个问题.

  1. 应始终将属性设置为autoreleased对象或将自行释放的对象.
  2. 切勿直接向物业发送.如果可能,我更愿意发布基础变量(例如[_uiValueSubviews release];)

将代码更改为以下内容.

- (id) initWithFrame :(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self.uiValueSubviews == nil){
        //Set to autoreleased array
        self.uiValueSubviews = [NSMutableArray array];
    }
    return self;
}

- (void)dealloc {
    //nil the value
    self.uiValueSubviews = nil;
    [super dealloc];
}
Run Code Online (Sandbox Code Playgroud)