【发布时间】:2011-01-12 15:31:00
【问题描述】:
当我完成这些日期指针中的一个或两个时,需要 [release]。我怎么会知道这个?我不确定,因为我没有明确地进行初始化。
NSDate *date = [NSDate date];
NSDate *date = [dateWithTimeIntervalSince1970:100000000];
【问题讨论】:
当我完成这些日期指针中的一个或两个时,需要 [release]。我怎么会知道这个?我不确定,因为我没有明确地进行初始化。
NSDate *date = [NSDate date];
NSDate *date = [dateWithTimeIntervalSince1970:100000000];
【问题讨论】:
不,这些方法返回的两个日期都是自动释放的。您不必担心它们的内存管理,但要成为一个好公民,在完成它们后将指针设置为 nil 是个好主意。
作为一般规则,您可以遵循我所说的“CARN”规则。在 Cocoa/Cocoa Touch 中,任何包含 Copy、Alloc、Retain、 或 New 字样的方法都会返回需要您在某个时候释放的对象。这些是应用于返回保留计数为 +1 的对象的方法的命名约定。调用这些方法的类“拥有”该对象,并负责在对象完成后释放它。
希望这会有所帮助。
【讨论】:
两者都是自动释放的,也就是说你不需要自己释放它们。经验法则是,如果您发送 +alloc 或 -copy 或显式保留它,您就拥有一个对象:
如果你拥有一个对象,你必须释放它。 +new 是 +alloc 和 -init 的快捷方式。
【讨论】: