每
的init
方法NSDateFormatter
是“在 iPhone OS 2.0 到 iPhone OS 3.2 中可用”,因此在 4.0 中不可用。现在,它确实有效,但这似乎很奇怪。这是一个错误还是有其他方法可以创建一个NSDateFormatter
?
每
的init
方法NSDateFormatter
是“在 iPhone OS 2.0 到 iPhone OS 3.2 中可用”,因此在 4.0 中不可用。现在,它确实有效,但这似乎很奇怪。这是一个错误还是有其他方法可以创建一个NSDateFormatter
?
这种弃用只是苹果清理 NSDateFormatter 的标头。init 已经在 NSNumberFormatter 继承的 NSObject 中声明。重新声明不是必需的,但是在实现中,苹果将覆盖 init,因为子类应该为超类的默认初始化程序提供实现。
就像这里falconcreek
所说的,Apple 只是在清除文档。
这意味着原来,- (id) init
已经在 NSDateFormatter 头文件中重新声明了。那是不必要的,后来有人将其删除。该文档可能是自动生成的,并且没有发现它只是被弃用的重新声明。
简而言之,init
随心所欲地使用NSDateFormatter
!
我会相信头文件而不是文档。
例如,格式化程序行为和操作系统版本似乎自相矛盾:
默认情况下,在 Mac OS X v10.4 实例上
NSDateFormatter
的行为与在 Mac OS X 版本 10.0 到 10.3 上的行为相同。在 Mac OS X v10.5 及更高版本上,NSDateFormatter
默认为 10.4+ 行为。如果使用 初始化格式化程序
initWithDateFormat:allowNaturalLanguage:
,则(出于向后兼容性的原因)创建“旧式”日期格式化程序。要使用新行为,请使用 初始化格式化程序init
。如有必要,您可以使用 ) 设置默认类行为,您可以使用带有参数的消息setDefaultFormatterBehavior:
设置实例的行为。setFormatterBehavior:
NSDateFormatterBehavior10_4
听起来initWithDateFormat:allowNaturalLanguage:
实际上是不推荐使用的方法?
这真的很奇怪。也许+[NSDateFormatter new]
会做这项工作?
我在多个 iOS4 应用程序中使用 init 方法,它们已获得批准并在商店中。我想不出任何办法让它工作,所以它看起来只是文档上的一个错字。
类参考中的示例代码仍然使用该init
方法,因此我认为在您自己的代码中使用它是安全的。
您可以证明自己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
.