1

我会对任何可以提供更多关于以下 Apple 建议的信息的人感兴趣(在核心数据教程中找到)在“viewDidUnload”中删除对象。例如:

  • 为什么这很重要?释放一个 nil'ing 有什么不同?
  • 这是最佳做法吗/我没有这样做过,也没有看到我在我看过的一些 iPhone 示例代码中没有想到的?

代码:

// The implementation of viewDidUnload should relinquish ownership 
// of anything created in viewDidLoad that can be recreated.

- (void)viewDidUnload {
  self.eventsArray = nil;
  self.locationManager = nil;
  self.addButton = nil;
}

- (void)dealloc {
  [managedObjectContext release];
  [eventsArray release];
  [locationManager release];
  [addButton release];
  [super dealloc];
}
4

2 回答 2

5

将属性设置为nil也将释放它们(假设 setter 方法应该释放旧值)。

此外,将属性设置为nil意味着之后可能最终发送给它们的任何消息都将被吞并nil并忽略。在它们被简单释放的情况下,对象可能会被释放并在内存中被覆盖,但它们仍然可能有消息发送给它们(现在被发送到内存中覆盖它们的任何地方),可能会导致崩溃、异常或其他意外的行为。

于 2011-03-30T00:48:23.413 回答
0

viewDidUnload 方法会在内存不足的情况下被调用。在内存不足的情况下,xib 将从内存中释放以释放应用程序的内存。但是如果我们仍然在我们的应用程序中保留 nib 对象,那将不够有效。因此,当我们在 viewDidUnload 中将 nib 对象设置为 nil 时,我们正在帮助释放更多内存。

于 2011-03-30T12:21:38.770 回答