代码之家  ›  专栏  ›  技术社区  ›  davetron5000

nsdateFormatter的init方法已弃用?

  •  15
  • davetron5000  · 技术社区  · 15 年前

    http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html

    这个 init 方法 NSDateFormatter “在iPhone OS 2.0到iPhone OS 3.2中可用”,因此 4。现在,它确实有效,但这似乎很奇怪。这是一个错误还是有其他方法来创建 NDATA格式化程序 ?

    7 回复  |  直到 14 年前
        1
  •  18
  •   falconcreek    15 年前

    这种贬低只是苹果清理nsdateformator的头文件。Init已在nsNumberFormatter继承的nsObject中声明。不需要重新声明,但是在实现中,Apple将重写init,因为子类应为超类的默认初始值设定项提供实现。

        2
  •  6
  •   Community CDub    8 年前

    喜欢 falconcreek here 苹果只是在清理文件。

    这意味着最初, - (id) init 已在nsdateFormatter头文件中重新声明。那是不必要的,后来有人把它拿走了。文档可能是自动生成的,并且没有意识到它只是被否决的重新归档。

    简而言之,使用 init 如你所愿 NSDateFormatter !

        3
  •  2
  •   NSGod Luchian Grigore    14 年前

    我相信头文件胜过文档。

    例如, Formatter Behaviors and OS Versions 似乎自相矛盾:

    默认情况下,在Mac OS X v10.4上 NSDateFormatter 与Mac OS X版本10.0到10.3上的行为相同。在Mac OS X v10.5及更高版本上, NDATA格式化程序 默认为10.4+行为。

    如果初始化格式化程序时使用 initWithDateFormat:allowNaturalLanguage: ,您(出于向后兼容的原因)正在创建一个__old style_日期格式化程序。若要使用新行为,请使用 init . 如果需要,可以使用 setDefaultFormatterBehavior: )可以使用 setFormatterBehavior: 带参数的消息 NSDateFormatterBehavior10_4 .

    听起来像 initWithDate格式:allowNaturallLanguage: 实际上是弃用的方法吗?

        4
  •  1
  •   Jonathan Sterling    14 年前

    这真的很奇怪。也许吧 +[NSDateFormatter new] 会做这项工作吗?

        5
  •  0
  •   AtomRiot    15 年前

    我在多个ios4应用程序中使用init方法,这些应用程序已获得批准并在商店中。我想不出办法让它工作,所以它看起来像是文件上的一个打字错误。

        6
  •  0
  •   indragie    15 年前

    类引用中的示例代码仍然使用 init 方法,所以我认为在您自己的代码中使用它是安全的。

        7
  •  0
  •   JJD    14 年前

    你可以证明你自己 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 .

    推荐文章