我如何知道何时释放NSDate对象?

时间:2010-02-03 14:18:24

标签: iphone release nsdate

当我完成这些日期指针时,其中一个或两个都需要[release]。我怎么知道这个?我不确定,因为我没有明确地做init。

NSDate *date = [NSDate date];

NSDate *date = [dateWithTimeIntervalSince1970:100000000];

2 个答案:

答案 0 :(得分:5)

不,这些方法的两个返回日期都是自动释放的。你不需要担心他们的记忆管理,但要成为一个好公民,当你完成它们时将指针设置为nil将是一个好主意。

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

希望这有帮助。

答案 1 :(得分:5)

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

  • [[SomeClass alloc] init ...]
  • [someObject copy]
  • [某些对象保留]

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