3

当我完成它们时,执行这些日期指针中的一个或两个都需要 [release]。我怎么会知道这个?我不确定,因为我没有明确地进行初始化。

NSDate *date = [NSDate date];

NSDate *date = [dateWithTimeIntervalSince1970:100000000];
4

2 回答 2

5

不,这些方法返回的两个日期都是自动发布的。您不必担心它们的内存管理,但要成为一个好公民,当您完成它们时将指针设置为 nil 将是一个好主意。

作为一般规则,您可以遵循我所说的“CARN”规则。在 Cocoa/Cocoa Touch 中,任何包含Copy、Alloc、RetainNew字样的方法都将返回需要您在某个时候释放的对象。这些是应用于返回保留计数为 +1 的对象的方法的命名约定。调用这些方法的类“拥有”该对象,并负责在对象完成时释放它。

希望这可以帮助。

于 2010-02-03T14:24:59.760 回答
5

两者都是自动释放的,也就是说你不需要自己释放它们。经验法则是,如果您发送 +alloc 或 -copy 或显式保留它,则您拥有一个对象:

  • [[SomeClass alloc] 初始化...]
  • [someObject 副本]
  • [一些对象保留]

如果你拥有一个对象,你必须释放它。+new 是 +alloc 和 -init 的快捷方式。

于 2010-02-03T14:26:00.167 回答