Objective c 保留托管对象-更通用的保留对象

Objective c 保留托管对象-更通用的保留对象,objective-c,cocoa-touch,release-management,nsmanagedobject,Objective C,Cocoa Touch,Release Management,Nsmanagedobject,关于托管对象的快速问题 我用托管对象(在对象1:TableViewConbtroller中)创建了一个数组,并将其中一个对象传递给另一个类/对象(对象2:TableCell) 原始数组仍应保留在原始调用方类中。 然后对象2被释放,这是否意味着数组中的特定项也被释放,就像对象2中对它的引用被释放一样 我正试图更好地理解在出现“对象已发布”错误时如何使用ManagedObjects [编辑] 经过一些实验,我遇到了以下情况: 我有一个主要的代表。 在另一个类中,我创建一个AppDelegate来获取

关于托管对象的快速问题

我用托管对象(在对象1:TableViewConbtroller中)创建了一个数组,并将其中一个对象传递给另一个类/对象(对象2:TableCell)

原始数组仍应保留在原始调用方类中。 然后对象2被释放,这是否意味着数组中的特定项也被释放,就像对象2中对它的引用被释放一样

我正试图更好地理解在出现“对象已发布”错误时如何使用ManagedObjects

[编辑] 经过一些实验,我遇到了以下情况: 我有一个主要的代表。 在另一个类中,我创建一个AppDelegate来获取ManagedObjectContext

appDelegate = (iDomsAppDelegate *)[[UIApplication sharedApplication] delegate];
[self setContext:[appDelegate managedObjectContext]];
当类完成后,我释放了它,“appDelegate”类中的变量也被释放。但是ManagedObjectContext关闭了,很明显,将来任何使用它的尝试都会导致崩溃。那么我应该让appDelegate不发布吗


这涉及到与上面相同的问题,即在从另一个类使用对象的情况下何时以及如何释放。我认为一种说法是,如何知道您何时拥有对象,何时不拥有对象。

UIApplication保留了您的应用程序委托,因此在视图控制器的dealloc方法中释放它不会解除应用程序委托。

这是我所期望的,但如果我这样做,我可以在控制台上看到数据库连接关闭,因此我认为这就是原因。