有没有办法在不创建新的NSDate实例的情况下更改NSDate的值? 我想保持指针相同,只需替换基础数据。
首先想法是对NSDate进行子类化并添加一个保存NSDate值的属性......
答案 0 :(得分:4)
我理解这个推理,但我认为可变子类的想法是危险的:
问题是框架不希望NSDate
个实例发生变化。因此,如果NSString
或符合NSMutableCopying
的其他类别,他们不会将它们复制到原来的位置。
此外,NSDate
可能只保留同一个实例并返回它,从而实现copy
。您必须覆盖此行为,这又可能是意外的。
NSDate
(类似于NSNumber
)的想法是表示不可变的值。很难想象框架如何以及在何处依赖于这一事实。
答案 1 :(得分:2)
另一种方法是将NSDate包装到您自己的类中。您的类将具有指向内部NSDate对象的指针。然后,您可以更改此内部对象,但这样做会使您的包装器对象指针保持不变。
你必须实现从这个包装器获取和设置内部日期的方法,但这并不困难。
答案 2 :(得分:0)
如果您有一个NSMutableArray或类似的容器类,那么您可以添加NSNull对象,并在以后替换它们。然后应该可以序列化它。 NSNull对象是一个单例,因此在更换之前会减少内存消耗。干杯:)