我在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]
但我觉得它在实例类中更有意义,因为我不想更改日期,只是调整以前创建的一些值。
答案 0 :(得分:6)
你做不到。具体做法是:
函数或方法不能修改调用上下文中的局部变量。
NSDate不可变(即创建后无法修改NSDate)。
因此,不能编写这样的方法。您可以获得的最接近的类是包装NSDate并将消息转发到该内部NSDate对象的类,当您希望使其代表新日期时,该对象会重新分配日期实例变量。