16

あたり

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.0では利用できません。確かに機能しますが、これは奇妙に思えます。これは間違いですか、それとも を作成する他の方法はありますNSDateFormatterか?

4

7 に答える 7

18

この非推奨は、Apple が NSDateFormatter のヘッダーをクリーンアップするだけです。init は、NSNumberFormatter が継承する NSObject で既に宣言されています。再宣言は必要ありませんが、サブクラスがスーパークラスのデフォルト初期化子の実装を提供する必要があるため、実装では Apple が init をオーバーライドします。

于 2010-07-05T22:12:50.783 に答える
6

ここfalconcreekで述べたように、Apple はドキュメントをクリアしています。

つまり、元々、- (id) initNSDateFormatter ヘッダー ファイルで再宣言されています。それは不要で、誰かが後で削除しました。ドキュメントはおそらく自動的に生成され、非推奨になったのは再宣言のみであることがわかりませんでした。

要するに、initあなたが望むように使用してくださいNSDateFormatter

于 2010-12-14T21:38:18.450 に答える
2

ドキュメントよりもヘッダーファイルを信頼します。

たとえば、Formatter Behaviors と OS Versionsは矛盾しているようです。

デフォルトでは、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:実際には廃止された方法のように聞こえますか?

于 2010-12-14T21:29:32.497 に答える
1

それは本当に奇妙です。多分+[NSDateFormatter new]その仕事をしますか?

于 2010-12-14T16:09:33.160 に答える
0

クラス リファレンスのサンプル コードは引き続きこのinitメソッドを使用しているため、独自のコードで安全に使用できると言えます。

于 2010-07-05T22:11:56.637 に答える
0

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.

于 2010-12-17T11:26:28.600 に答える
0

複数の iOS4 アプリで init メソッドを使用していますが、それらは承認されており、ストアにあります。それを機能させる方法は考えられないので、ドキュメントの単なるタイプミスのように思えます。

于 2010-07-05T22:01:47.660 に答える