1

我在 NSDate 上有一个类别,我想实现一些函数来操作日期,例如:

NSDate *thedate = [NSDate date];
[thedate setToMidnight];

所以我在 NSDate 中有一个函数,例如:

-(void)setToMidnight {
   some code with calendars and comps

   self = theNewDate;
}

这在函数内部有效,但在此成员函数外部,日期没有改变。我理解这个故障,因为我被告知 self 只是在成员函数内部创建的局部变量。那么,我怎样才能使这项工作?

当然,我可以写:

thedate = [thedate dateAsMidnightDate]
or thedate = [NSDate dateAtMidnightFromDate:thedate]

但我觉得它在实例类中更有意义,因为我不想更改日期,而只是调整先前创建的日期的一些值。

4

1 回答 1

6

你不能。具体来说:

  1. 函数或方法不能修改调用上下文中的局部变量。

  2. NSDate 是不可变的(即,一旦创建了 NSDate,您就不能修改它)。

因此,不能编写这样的方法。你能得到的最接近的是一个包装 NSDate 并将消息转发到该内部 NSDate 对象的类,当你想让它代表一个新日期时,它会重新分配日期实例变量。

于 2010-12-29T01:01:33.130 回答