我正在大力研究内存微调,大多数问题都在 stackoverflow 的帮助下得到解决。但最后我被 NSMutableArray 初始化的严重内存泄漏所震惊。
- (NSMutableArray *)children {
if (!_children) {
_children = [NSMutableArray new]; // <-- here is the memory leak
}
return _children;
}
- 我正在处理一个我们使用 100% ARC 的项目。
- 除了主线程(没有使用线程)之外,不会触发特定的类初始化。
- 但是...这是我们使用递归的唯一地方
此外,声明
@property(强,非原子)NSMutableArray *children;
@synthesize children = _children;
是否在各自的 .h 和 .m 文件中...
什么可能是问题....?
提前感谢您的努力...
更多信息...
- (id)init {
if (self = [super init]) {
[self setIsRoot:NO];
// [self setChildren:[NSMutableArray new]]; // <-- was before, but I moved to custom setter
}
return self;
}
- (id)initAsRoot
{
if (self = [self init]) {
self.level = -1;
self.index = -1;
self.isExpaned = YES;
self.value = @"Root";
self.isRoot = YES;
}
return self;
}