Parse.com iOS[PFObject saveAll]/[PFObject saveAllInBackground]内存分配问题

Parse.com iOS[PFObject saveAll]/[PFObject saveAllInBackground]内存分配问题,ios,objective-c,parse-platform,pfobject,Ios,Objective C,Parse Platform,Pfobject,提前谢谢。每当我调用[PFObject saveAll]或[PFObject saveAllInBackground]时,分配给该进程的内存在任务完成后无法释放。因此,如果重复调用此方法,应用程序将因可用内存不足而崩溃。我正在使用iOS 8.1.3和Xcode 6.2以及ARC在iPhone5上进行测试。我也在使用最新的iOS解析SDK,尽管这个问题在旧的SDK中仍然存在 编辑 几周前,我提交了一份bug报告进行分析。他们派了人去调查: 错误的源代码: 缺陷存在的证据:虽然每次运行对我来说都不一

提前谢谢。每当我调用[PFObject saveAll]或[PFObject saveAllInBackground]时,分配给该进程的内存在任务完成后无法释放。因此,如果重复调用此方法,应用程序将因可用内存不足而崩溃。我正在使用iOS 8.1.3和Xcode 6.2以及ARC在iPhone5上进行测试。我也在使用最新的iOS解析SDK,尽管这个问题在旧的SDK中仍然存在

编辑

几周前,我提交了一份bug报告进行分析。他们派了人去调查:

错误的源代码:


缺陷存在的证据:

虽然每次运行对我来说都不一样,但有时内存占用会完全消失。查看下图

不过,我同意,大多数时候似乎都有某种残留


来源:

我已经找到了解决这个错误的方法。当添加对象作为指针时,对该对象执行简单查询,而不是重用通过更复杂的查询提取的同一对象

例如,当包含bigObject作为大的“全部保存”指针时,这将导致大内存泄漏:

PFQuery* query = [PFQuery queryWithClassName:@"Object"];
[query whereKey:@"objectId" equalTo:object.objectId];

// Don't include an array of pointers like this
[query includeKey:@"objectArray1"];
[query includeKey:@"objectArray2"];

PFObject* bigObject = [query getFirstObject];
但这不会:

PFQuery* query = [PFQuery queryWithClassName:@"Object"];
[query whereKey:@"objectId" equalTo:object.objectId];

PFObject* smallObject = [query getFirstObject];

请发布代码和证据证明内存确实泄漏。您是否在任何地方使用PFRelation?@random否,我没有在任何地方使用PFRelation。@danh当我保存大约90个PFObjects时,调试导航器的内存部分在230 MB左右徘徊。如果我将存储分成10个较小的组,几乎不会分配任何实质性内存。您是否将这些对象保留在其他任何位置?很有趣。一次要保存多少个对象?我注意到,如果一次保存的对象较少,例如10个以下的对象,则几乎没有任何剩余。当我开始保存25+时,很明显有很多已使用的内存没有被释放。此外,如果我保存一个对象时有很多指向其他对象的新指针,同样的问题也会出现。如果这对您来说是生产中的一个大问题,那么我建议您与ParseYep的人员联系,确切地说,正在为他们编写一个示例项目