代码之家  ›  专栏  ›  技术社区  ›  Daniel

iOS核心数据怎么会泄露?

  •  0
  • Daniel  · 技术社区  · 14 年前

    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];
    }
    

    其中user是一个托管对象,它包含VideoEntity作为一对多关系,我将VideoEntity分配给一些线程来操作……Leaks说VideoEntity正在泄漏。

    有人有意见吗?

    2 回复  |  直到 10 年前
        1
  •  1
  •   Lily Ballard    14 年前

    UploadThread可能会保留它,而不会释放它。是的,NSManagedObjects可能会泄漏。它们只是物体。它们是系统其余部分使用的相同内存管理的一部分。

        2
  •  1
  •   Jason Coco superfell    14 年前

    具有关系的托管对象具有隐式保留周期(即关系的两边都保留其对象)。一旦你在一段关系中犯了错,你就创造了这个保留周期。要打破它,你需要打电话 -[ManagedObjectContext refreshObject:mergeChanges:] 重新对对象进行故障诊断并中断保留周期。

    有关更多信息,请参阅 Core Data Programing Guide .