Core data 核心数据在设备上奇怪地泄漏,但不是模拟器

Core data 核心数据在设备上奇怪地泄漏,但不是模拟器,core-data,ios4,Core Data,Ios4,我已将内存泄漏问题缩小到以下特定代码块: NSFetchRequest *req = [NSFetchRequest new]; NSEntityDescription *descr = [NSEntityDescription entityForName:@"Capture" inManagedObjectContext:dataContext]; [req setEntity:descr]; NSSortDescriptor *sort = [[NSSortDescriptor all

我已将内存泄漏问题缩小到以下特定代码块:

NSFetchRequest *req = [NSFetchRequest new]; 
NSEntityDescription *descr = [NSEntityDescription entityForName:@"Capture" inManagedObjectContext:dataContext]; 
[req setEntity:descr]; 
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"created_at" ascending:NO]; 
[req setSortDescriptors:[NSArray arrayWithObject:sort]]; 
[sort release]; 
NSError *error; 
NSArray *ret = [dataContext executeFetchRequest:req error:&error]; 
[req release]; 
此块存在于导航控制器中一层或两层以下视图控制器的
init
viewDidLoad
方法中

我感到困惑的是,我不知道该怎么做,这段代码与
CoreGraphics
Foundation
,甚至
JavaScript-Core
,有关,但我不确定如何纠正这个问题(不确定问题是什么)。这仅在设备安装上运行仪器时发生,而不是在模拟器上

[这不允许我发布仪器的照片,所以这是照片:]

顺便说一句,我的核心数据模型过去有一个属性,该属性包含一个转换后的
UIImage
,但后来我将其转换为一个
NSNumber
,并为我的项目重建了对象类。这可能与此有关吗?当改变我的模型时,我是否需要采取另一个步骤

Thx


**更新:*更改了图片的URL

如果您点击Instruments底部面板中的source按钮并将源文件拖到其中,它将显示代码中认为泄漏所在的行。如果应用程序正在运行,您可以将显示的对象地址复制到调试器,如下所示:

po 0x1a831
。。。它将在该地址打印对象的描述


最有可能的是,泄漏是由获取托管对象的副作用造成的。值转换器是此类泄漏的常见来源,因为它们在每次使用时都会创建对象。我将查看托管对象子类本身以查找泄漏源

我的应用程序和另一个应用程序的一个朋友也有类似的问题。我们已经检查并重新检查了我们的代码,我们这边没有任何问题(我们正在做与苹果示例代码相同的基本工作)

当在设备上使用核心数据时,似乎会有令人讨厌的副作用,而这在模拟器上是不会发生的

我在这个问题上花了很多时间,我认为问题实际上是在苹果框架上,而不是在我的代码上。我认为就这个问题提交一份bug报告是个好主意

注意:我遇到了这个问题,没有使用任何自定义或可转换的对象,只有托管对象中的字符串属性。

同意,这里也有同样的问题。 即使您只是将向导生成的代码与拆分视图和核心数据一起使用,它也会泄漏! 我花了一段时间才发现这一点。我在一个应用程序上写了大量代码,当准备开始泄漏测试时,由于仪器在我的代码中没有指出任何东西,所以找不到泄漏源。我的症状和你的完全一样。 因此,在对我的代码进行了几天的注释之后,我决定启动splitview的模板项目,勾选核心数据,而不是自己添加任何代码。 你猜怎么着?同样该死的漏洞。它仅在应用程序启动时发生,并且仅在您使用应用程序添加项目时发生。 我很惊讶苹果公司没有解决这个问题,或者至少没有提到解决办法。
我是唯一一个使用Splitview的核心数据的人吗?

您的链接显示一个空白页,甚至没有源。奇怪。我更改了链接,现在就试试。我对处理内存问题有点陌生,所以我对这里的任何无知表示歉意。但在仪器的底部面板中,我到底在哪里可以找到源按钮呢?在扩展细节中,我找到了一个源位置选项,但它没有显示我的任何代码——就好像所有泄漏都在默认框架中一样。此外,我不再在托管对象/核心数据中使用值转换,并且对象文件非常简单&默认值。我是不是错过了从变形金刚转换过来的一个步骤?是缓存了什么东西还是奇怪的东西?见鬼,我不确定。我刚刚检查过,Xcode 3.2.3附带的新版本的界面与以前的版本不同,与《仪器用户指南》中的界面也不同。它曾经在细节视图的底部,但是那些按钮已经不在了。下面是它的工作原理