的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
。
- 1. Realm中的allObjects()方法已被棄用?
- 2. 爲什麼記錄的NSDateFormatter init方法不被識別?
- 3. 「成功」方法已被棄用。使用`then`方法
- 4. RxJavaPlugins.getInstance已被棄用
- 5. reversibleTransformerWithForwardBlock已被棄用
- 6. getActionView已被棄用?
- 7. SMSManager已被棄用
- 8. org.hibernate.dialect.PostgreSQLDialect已被棄用
- 9. devicesWithMediaType已被棄用
- 10. UILineBreakModeWordWrap已被棄用
- 11. setAllowsImageEditing已被棄用?
- 12. requiredContentSizeIdentifiers已被棄用
- 13. dismissModalViewControllerAnimated已被棄用
- 14. videoMinFrameDuration已被棄用
- 15. FBML已被棄用?
- 16. is window.requestFileSystem方法已棄用?
- 17. load()方法已棄用?
- 18. 方法光標被棄用
- 19. 的setText已被棄用
- 20. 從類型PreferenceActivity的方法addPreferencesFromResource(INT)已被棄用
- 21. Object.observe的替代方法是什麼,因爲它已被棄用
- 22. XmlReader.ReadString是否已被棄用或廢棄?
- 23. Renderer已被棄用,作爲renderer2的替代方法,invokeElementMethod的替代方法?
- 24. PlacePicker.getPlace()和GooglePlayServicesUtil.getErrorDialog()已被棄用
- 25. Android:Gallery View已被棄用?
- 26. C功能已被棄用
- 27. 沙模塊已被棄用
- 28. Parse.com fetchInbackground已被棄用?
- 29. LongTimeString已被棄用? C#IValueConverter
- 30. 錯誤:stringWithCString已被棄用
你從哪裏讀到這個? – 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