有没有办法知道哪些对象保留了目标对象?
虽然使用ARC,但我不知道为什么对象在应该被释放时没有被释放。我想找到哪些对象仍然保留此对象。但是如何?
我确实尝试使用Instruments,但没有内存泄漏问题。我检查整个项目,但没有找到任何保留周期。我怎么知道哪些对象保留了这个对象?
答案 0 :(得分:3)
您可以在您认为未发布的类中实现此方法:
- (id)retain
{
return self;
}
并将NSLog或Breakpoint放在那里。
不幸的是,现在有办法显示对象之间的保留关系。
答案 1 :(得分:3)
您可以覆盖retain方法并记录调用堆栈。这将记录调用堆栈的回溯:
- (id)retain {
NSLog(@"%@", [NSThread callStackSymbols]);
return [super retain];
}