我有一个应用程序,在我看来,内存没有被释放,但我不知道如何分析这个问题。
xcode中的'Analyze'显示没有问题,'Instruments'没有显示任何内存泄漏。据我所知,不建议查看保留计数。
如何找到有问题的物品?我已经在对象的'dealloc'方法中添加了打印输出,并且没有看到它被调用。
更新
我现在正在接受
objc [69139]:FREED(id):发送给释放对象的消息retainCount = 0x5422420
有没有一种简单的方法可以找出这是哪个对象? “分析”不报告任何无效版本。
答案 0 :(得分:0)
我建议您搜索代码并查找每个init / alloc语句。然后,验证每个对象是否正确释放。如果你有一个问题,你可能会有更多。最初看起来似乎是一个高成本,但它可能会在固定的错误中得到回报。
值得注意的一件大事是来自你也正在设置的笔尖的引用。那些没有被释放的人很容易。我发现最简单的方法是确保没有内存错误来声明它们:
@property (nonatomic, retain) IBOutlet UILabel *message;
然后确保dealloc类似于:
- (void)dealloc {
self.message = 0;
[super dealloc];
}
我做了这两件事,我的所有记忆错误都被清除了。