保留托管对象 - 更一般的保留对象

时间:2010-12-24 17:24:18

标签: objective-c cocoa-touch release-management nsmanagedobject

关于托管对象的快速问题。

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

原始数组仍应保留在原始调用者类中。 然后释放对象2,这是否意味着数组中的特定项目也被释放,因为对象2中对它的引用已经发布了?

我正在努力更好地理解如何使用ManagedObjects,因为我发现'Object was released'错误。

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

appDelegate = (iDomsAppDelegate *)[[UIApplication sharedApplication] delegate];
[self setContext:[appDelegate managedObjectContext]];

当类完成并释放它时,类'appDelegate'中的变量也会被释放。但随后ManagedObjectContext被关闭,显然任何将来尝试使用它都会导致崩溃。那么我应该让appDelegate未发布吗?

这与上面提到的问题是关于何时以及如何在从另一个类使用对象的情况下释放。我认为一种方法是,如何知道你何时拥有一个物体,何时不知道。

1 个答案:

答案 0 :(得分:0)

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