2

为什么泄漏仪器告诉我这是泄漏?我正在使用 ARC。我应该怎么做才能不泄漏?顺便说一句,我尝试将“强”更改为“弱”,但随后收到警告"Assigning retained object to weak property; object will be released after assignment"

@property (nonatomic, strong) NSMutableArray *myArray;

-(id)init{
    self = [super init];
    if (self){
        _myArray = [[NSMutableArray alloc] init]; //<== leak here
    }
    return self;
}
4

2 回答 2

0

您确定ARC实际上已打开吗?尝试添加类似 [self release] 的内容,看看它是否可以编译。如果是这样,则 ARC 未打开。

于 2013-03-28T22:43:39.267 回答
0

您不应该properties通过它们的getter内部initdealloc方法访问。相反,您应该直接设置支持 ivar,如下所示:

-(id)init
{  
  self = [super init]; 

  if (self)
  {  
    _myArray = [[NSMutableArray alloc] init]; //<== leak here
  } 

  return self;  
}

注意:如果您auto-synthesize在最新版本的 Xcode 中使用该功能 - 也就是说,您没有手动编写@synthesize一行 - 支持 ivar 将与您的属性命名相同,并在其前面加上下划线。

试试上面的这个,看看泄漏是否消失。

祝你好运。

于 2013-03-28T22:50:09.807 回答