NSDateFormatter的init方法已被弃用?
的NSDateFormatter
的init
方法是 “可用于iPhone OS 2.0通过iPhone OS 3.2”,因此不在 4.0。现在,它确实有效,但这似乎很奇怪。这是一个错误还是有其他方法来创建一个NSDateFormatter
?
这个弃用只是苹果清理NSDateFormatter头。 init已经在NSObject的NSNumberFormatter继承自NSObject中声明。 Redeclaring是没有必要的,但是在实现中,苹果将会覆盖init,因为subclassess应该为超类的默认构造器提供实现。
非常感谢你的解释。非常误导苹果的一部分。它不应该被标记为已弃用。 – dmkash 2011-03-06 22:12:29
然而,为这个类的init方法提供* documentation *对于描述这个类的实现有什么作用仍然很有用。例如“初始化默认格式化的格式化程序”等。 – user102008 2011-04-26 00:06:00
我在多个iOS4应用程序中使用init方法,它们已被批准并在商店中使用。我可以想办法让它无法工作,所以它看起来只是它在文档上的一个错字。
类引用中的示例代码仍然使用init
方法,所以我会说它可以安全地在您自己的代码中使用它。
这真的很奇怪。也许+[NSDateFormatter new]
将完成这项工作?
如果'init'被弃用,那么'+ new'也是因为'+ new'不管怎么说都不过是'alloc + -init'(但猜测得很好)。 – bbum 2010-12-14 17:59:43
我会相信文档中的头文件。
例如,Formatter Behaviors and OS Versions似乎自相矛盾:
默认情况下,对
NSDateFormatter
的Mac OS X v10.4的情况下,具有相同的行为,因为他们没有在Mac OS X版本10.0到10.3。在Mac OS X v10.5及更高版本中,NSDateFormatter
默认为10.4+行为。如果使用
initWithDateFormat:allowNaturalLanguage:
初始化格式化程序,则(为了向后兼容的原因)创建“旧式”日期格式化程序。要使用新行为,请使用init
初始化格式器。如有必要,您可以使用setDefaultFormatterBehavior:
)设置默认类行为,您可以使用setFormatterBehavior:
消息和参数NSDateFormatterBehavior10_4
来设置实例的行为。
听起来像initWithDateFormat:allowNaturalLanguage:
实际上是弃用的方法?
没错,看起来'initWithDateFormat:allowNaturalLanguage:'实际上是不赞成使用的方法。头文件是这样的情况下应该引用的头文件。 – paulbailey 2010-12-14 22:07:41
您可以证明NSDateFormatter
具有不同的行为,具体取决于您选择的初始值设定项和您正在编译的SDK。以下是使用SDK 10.5和10.6进行测试。
NSDateFormatter* df = [[NSDateFormatter alloc] initWithDateFormat:@"yyyyMMdd" allowNaturalLanguage:NO];
if ([df formatterBehavior] == NSDateFormatterBehavior10_0)
NSLog(@"NSDateFormatterBehavior10_0");
else if ([df formatterBehavior] == NSDateFormatterBehavior10_4)
NSLog(@"NSDateFormatterBehavior10_4");
这将返回NSDateFormatterBehavior10_0
。
相反,当您使用[[NSDateFormatter alloc] init];
时,行为是NSDateFormatterBehavior10_4
。
你从哪里读到这个? – prgmast3r 2010-12-14 15:49:53
官方文档:http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/DeprecationAppendix/AppendixAdepledatedAPI.html – bontoJR 2010-12-14 16:04:23
我很确定“setLocale”和“setTimeStyle”是正确的方法来做到这一点,我只是好奇你现在应该如何获得NSDateFormatter实例? – fuzzygoat 2010-12-14 16:08:15