Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ipad/iphone应用程序中的内存管理_Iphone_Debugging_Memory Management_Memory Leaks_Ipad - Fatal编程技术网

ipad/iphone应用程序中的内存管理

ipad/iphone应用程序中的内存管理,iphone,debugging,memory-management,memory-leaks,ipad,Iphone,Debugging,Memory Management,Memory Leaks,Ipad,我有一个应用程序,在我看来,内存没有被释放,但我不知道如何分析这个问题 xcode中的“分析”显示没有问题,“仪器”也没有显示任何内存泄漏 据我所知,不建议查看保留计数 如何找到有问题的对象?我已将打印输出添加到对象的“dealloc”方法中,但没有看到正在调用它 更新 我现在明白了 objc[69139]:FREEDid:发送到已释放对象的消息retainCount=0x5422420 有没有一个简单的方法来找出这是哪一个物体? “Analyze”不会报告任何无效版本。我建议搜索您的代码并查找

我有一个应用程序,在我看来,内存没有被释放,但我不知道如何分析这个问题

xcode中的“分析”显示没有问题,“仪器”也没有显示任何内存泄漏

据我所知,不建议查看保留计数

如何找到有问题的对象?我已将打印输出添加到对象的“dealloc”方法中,但没有看到正在调用它

更新

我现在明白了

objc[69139]:FREEDid:发送到已释放对象的消息retainCount=0x5422420

有没有一个简单的方法来找出这是哪一个物体?
“Analyze”不会报告任何无效版本。

我建议搜索您的代码并查找每个init/alloc语句。然后,验证每个对象是否已正确释放。如果你有一个问题,你可能会有更多的问题。起初,这似乎成本很高,但很可能会在修复bug后得到回报

需要注意的一件大事是来自NIB的引用,您也正在设置这些引用。让那些没有被释放的人很容易。我发现确保没有内存错误的最简单方法是声明它们,如下所示:

@property (nonatomic, retain) IBOutlet UILabel *message;
- (void)dealloc {
    self.message = 0;
    [super dealloc];
}
然后确保dealloc类似于:

@property (nonatomic, retain) IBOutlet UILabel *message;
- (void)dealloc {
    self.message = 0;
    [super dealloc];
}

不久前我做了这两件事,我所有的内存错误都被清除了。

您必须发布一些代码,以便任何人都能提供帮助。我们无法在自己看不到的情况下告诉您出了什么问题。这只是一个关于调试技术的一般性问题。谢谢-开始手动扫描。。。实际上我没有任何笔尖,所以我想我可以把它划掉…self.message=0应该是[message release]。另外,使用nil清除指针。实际上,它是按原样工作的。分配0/nil将导致释放旧值。是的,但这不是一种常见模式,与其他代码相比看起来很奇怪。