我正在分析我的应用程序泄漏,我观察到一些核心数据实体泄漏,NSManagedObject如何泄漏?我认为这是由操作系统管理的?核心数据中是否存在泄漏?泄漏说行导致泄漏iOS核心数据如何泄漏?
NSMutableArray *e=[NSMutableArray arrayWithArray:[[user videos] allObjects]];
//the line above^is pointed to by leaks as generating a leak
for(VideoEntity * v in e)
{
UploadThread *ut= [[UploadThread alloc] init];
[ut setVideoEntity:v];
[threads addObject:ut];
[ut release];
}
当用户被包含VideoEntity为一对多的关系,我分配VideoEntitys一些线程上运行一个管理对象...泄漏说VideoEntity是泄漏。
有没有人有任何输入?
这是一个相当多点,我虽然没有假设保留或释放托管对象,但UploadThread的setter被声明为retain,这应该不是!即使对象仍然由系统管理,调用保留实际上是否有泄漏(内存未被重新分配)? – Daniel 2010-10-29 22:06:49
不,你绝对应该保留/释放它们。它们是正常的obj-c对象,它们只是通过上下文完成一些额外的管理。如果你不保留/释放这些物体,那么它们可能停留在周围,或者它们可能会从你下面消失,这取决于环境是否决定保持它们。在思考内存管理时,你应该忽略上下文,只是像对待任何其他模型对象一样对待它们。 – 2010-10-29 22:54:52