Iphone 警告:收到内存警告级别1并崩溃

Iphone 警告:收到内存警告级别1并崩溃,iphone,objective-c,ipad,memory-management,Iphone,Objective C,Ipad,Memory Management,我一直在研究这个问题,所以有些人说,只要应用程序不崩溃,这个错误就可以了 我的应用程序出现此错误,之后当我尝试点击某个单元格的行(调用DidSelectRowatineXpath)时,它崩溃。它给了我一个错误,从UIImage发送的消息到解除分配的消息。我猜这是因为内存警告,它释放了一些UIView,因此崩溃了 这是为什么?我该如何解决?我已经调试了很长一段时间了,使用了一些工具,分析,等等,但是运气不好。 我想发布一些代码,但不知道该发布哪一个。您未能保留您关心的内容。从您的消息中,我怀疑该对

我一直在研究这个问题,所以有些人说,只要应用程序不崩溃,这个错误就可以了

我的应用程序出现此错误,之后当我尝试点击某个单元格的行(调用DidSelectRowatineXpath)时,它崩溃。它给了我一个错误,从UIImage发送的消息到解除分配的消息。我猜这是因为内存警告,它释放了一些UIView,因此崩溃了

这是为什么?我该如何解决?我已经调试了很长一段时间了,使用了一些工具,分析,等等,但是运气不好。
我想发布一些代码,但不知道该发布哪一个。

您未能保留您关心的内容。从您的消息中,我怀疑该对象是
UIImage
。从运行静态分析器开始,看看是否有明显的问题。然后检查你的IVAR,特别是与图像相关的IVAR。确保使用访问器访问IVAR,而不是直接访问(除了在init中,访问器本身和dealloc)。确保使用“保留”定义对象属性


您可以使用“僵尸”工具来帮助您跟踪保留的对象。

您无法保留您关心的对象。从您的消息中,我怀疑该对象是
UIImage
。从运行静态分析器开始,看看是否有明显的问题。然后检查你的IVAR,特别是与图像相关的IVAR。确保使用访问器访问IVAR,而不是直接访问(除了在init中,访问器本身和dealloc)。确保使用“保留”定义对象属性



您可以使用“僵尸”工具来帮助您跟踪哪个对象被保留。

根据您的一条评论,很明显问题在于内存管理和释放对象。。。。我建议您深入研究代码,找出释放对象(或分配对象)的代码段。。。这也可能是因为你在分配后根本没有释放你的对象,而处理器因为内存不足而试图杀死你的应用…顺便说一句,这种错误占用了你很多时间。。。祝你好运……

根据你的一条评论,很明显问题在于内存管理和释放对象。。。。我建议您深入研究代码,找出释放对象(或分配对象)的代码段。。。这也可能是因为你在分配后根本没有释放你的对象,而处理器因为内存不足而试图杀死你的应用…顺便说一句,这种错误占用了你很多时间。。。祝您好运…

您是否使用跟踪错误发生的确切位置?如果是这样,请为向该UIImage发送消息的didSelectRowAtIndexPath部分发布一些代码。我使用的是NSZombiesEnabled,当它崩溃时,它会指向main.m,特别是int-retVal=UIApplicationMain(argc,argv,@“CVore”,nil);您的一些代码可以帮助我们。。尝试在DidSelectRowatinex中发布一些代码。您是否使用来准确跟踪错误发生的位置?如果是这样,请为向该UIImage发送消息的didSelectRowAtIndexPath部分发布一些代码。我使用的是NSZombiesEnabled,当它崩溃时,它会指向main.m,特别是int-retVal=UIApplicationMain(argc,argv,@“CVore”,nil);您的一些代码可以帮助我们。。尝试在你的DidSelectRowatinex中发布一些代码。我已启用NSZombie,但我的应用程序中没有任何UIImage。。这就是为什么我要把头发拔出来。。。最接近UIImage的是TTImageView。TTImageView几乎肯定有一个UIImage在里面,所以这是一个很好的地方。你可能没能留住它。您还应该确保在
viewDidUnload
中将所有iboutlet设置为
nil
。我应该在viewDidUnload或dealloc中将IBOutlet设置为nil吗?还有一个问题是,我不知道如何重现此错误。。还有一件事,当应用程序在设备中运行而不是在模拟器中运行时,这种情况会更常见。。此外,当只有此应用程序作为唯一的单一应用程序运行时。。我认为它永远不会崩溃,您应该在viewDidUnload中将IBOutlet属性设置为nil(self.label=nil)。您应该在dealoc中发布iboutletivar([\u标签发布])。如果要在模拟器中测试内存不足情况,请使用硬件>模拟内存警告。我已启用NSZombie,并且我的应用程序中没有任何UIImage。。这就是为什么我要把头发拔出来。。。最接近UIImage的是TTImageView。TTImageView几乎肯定有一个UIImage在里面,所以这是一个很好的地方。你可能没能留住它。您还应该确保在
viewDidUnload
中将所有iboutlet设置为
nil
。我应该在viewDidUnload或dealloc中将IBOutlet设置为nil吗?还有一个问题是,我不知道如何重现此错误。。还有一件事,当应用程序在设备中运行而不是在模拟器中运行时,这种情况会更常见。。此外,当只有此应用程序作为唯一的单一应用程序运行时。。我认为它永远不会崩溃,您应该在viewDidUnload中将IBOutlet属性设置为nil(self.label=nil)。您应该在dealoc中发布iboutletivar([\u标签发布])。如果你想在模拟器中测试内存不足的情况,请使用硬件>模拟内存警告。我同意你的最后一句话,这太浪费时间了。我花了3天的时间试图找到这个错误。。。我认为测试要比编写应用程序花的时间长一点我同意你的最后一句话,这太糟糕了。我花了三天的时间试图找出这个错误。。。我认为测试比编写应用程序本身需要更长的时间