2012-05-16 50 views
0

NSDate是否有这样的第三方扩展?寻找NSMutableDate类

我需要一些方法来调整日期(增加或减少日/月/年)并保持日期对象在同一内存中(所以myDate = getNewDateByAdjustingOldOne (myDate);将不被接受)。

如果没有实现可变日期,是否可以获得内部NSDate数据(考虑到无法访问NSDate类接口中的内部数据)。

回答

0

真的是做myDate的内存开销= getNewDateByAdjustingOldOne(myDate);是如此之小,我真的不会担心它。过早优化可能导致完全可避免的错误。

+0

原因是其他对象保持对'myData'的引用,我应该在调整后手动同步它们。 – brigadir

+0

如果您需要保持所有引用不变,则始终可以创建一个包装对象并使用指向该对象的指针。将是避免必须更新所有日期引用的好方法。 – diegoreymendez

1

你可以把所有的对象需要共享NSDate对象存储一个指针的指针,即

NSDate** pDate 

然后让所有的操作上&pDate执行。在您正在调整日期的班级中,只需继续重设

&pDate = NSDate* *newDate* 

然后所有的对象都会同步。

+0

了解...这看起来像'NSDate'上面的包装。不像'NSDate'子类那么优雅,但应该工作。 – brigadir

+0

取决于你如何看待它。一个子类是一个完全独立的类。在这种情况下,你没有任何额外的类,我更喜欢单独的包装类。 :-) – rvijay007

0

您可以使用NSCalendarNSDateComponents作为可变日期。可以设置“预制”NSDateComponents以添加/减去默认时间量或根据需要进行设置。

NSDateComponents *comps = [NSDateComponents alloc] init]; 
comps.day = 1; 
NSCalendar *cal = [NSCalendar currentCalendar]; 
// will wind up adding 1 day to the original date. 
NSDate *newDate = [cal dateByAddingComponents:comps toDate:origDate options:NSWrapCalendarComponents]; 

苹果在Calendrical Calculations上写了一些不错的文档。