initWithCalendarIdentifier没有具体的实现?

时间:2013-09-30 19:39:53

标签: objective-c calendar ios7 abstract-class

将应用程序升级到iOS7,我有以下代码:

NSCalendar *calendar = [[NSCalendar currentCalendar] initWithCalendarIdentifier:NSGregorianCalendar];

我得到了:

由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' * - [NSCalendar initWithCalendarIdentifier:]:仅为抽象类定义的方法。定义 - [_ NSCopyOnWriteCalendarWrapper initWithCalendarIdentifier:]!'

有什么想法吗?感谢

1 个答案:

答案 0 :(得分:1)

NSCalendar的currentCalendar方法返回一个完全初始化的NSCalendar实例,因此您不需要初始化它。你应该这样做:

NSCalendar *calendar = [NSCalendar currentCalendar];

仅供参考,iOS6也是如此;从来没有必要对[NSCalendar currentCalendar]返回的值调用init方法。

如果您只想创建一个与currentCalendar无关的新Gregorian日历实例,您可以这样做:

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];