我有一个 Button 是否正确,它基本上将 NSManagedObject 传递给 segue 以加载下一个视图,在下一个视图中我加载父 NSManaged 对象的子对象。当我销毁该控制器时,NSManagedObject 仍由原始按钮与子按钮一起保留。我假设它会在我下次加载相同的数据时被释放,因为它会覆盖 NSManaged 对象的该属性。但是保留所有这些子对象是不好的还是正常的?
我应该/我可以通过在某个时候将属性设置为 nil 来手动释放这些孩子吗?
让我为我所看到的内容提供更多背景信息。
-[品牌页面]的内容
- (NSArray *) pages {
NSLog(@"%@", [self edetail]);
if ([self edetail] != nil) {
NSArray *pgs = [[[self edetail] pages] allObjects];
return [pgs sortedArrayUsingDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"sort_order" ascending:YES]]];
}
return [NSArray array];
}
假设我有一个 objectA 的 NSArray,我们是一个 NSSet,我从 coredata 中提取并排序。然后我遍历 Array 中的每个 objectA 并创建一个自定义按钮类,该类的属性设置为 objectA。当单击按钮时,我向 UINavigationController 发送一条消息,以转到使用该 ObjectA 拉取某个子数组/ObjectA 集并在自定义网格中显示数据的页面。
根据工具,当我弹出已将 ObjectA 传递给的 UIViewController 时,ObjectA 仍在保留那些子对象,而 ObjectA 仍由我的按钮保留。这真的是一个糟糕的设计吗?这似乎并不比我的 RootViewController 保留这些对象的 NSArray 并通过索引调用它们更糟糕。
不过,我觉得在使用该应用程序的过程中,我最终可能会实际引用核心数据中的每条数据,这让我担心,即使我不需要这些孩子也不会被释放。