1

そのため、Objective Cの数字を使っていくつかのことをしようとしていますが、選択肢がたくさんあることに気づきました。アプリにどのタイプを使用するかについては、戸惑っています。

だからここにタイプがあります。

  • NSNumber(クラス)
  • NSDecmial(構造体)
  • NSDecimalNumber(クラス)
  • float / double(プリミティブ型)

したがって、基本的に私が行う必要があるのは、10進数ベースの時間を表すNSStringを取得することです。(10.4は10時間(4/10)* 60分になります)そしてそれを次のように変換します:

  1. 文字列表現DH:M(これには除算、乗算、基本的な算術が必要です)
  2. 後で簡単に計算できるように格納する数値タイプ(主にNSTimeIntervals間で変換し、減算を実行します)

ああ、私はこれらに対しても絶対値を実行できる必要があります

難しい部分は実際にはタイプ間で移行しているようです。

私にとってこれは非常に些細な問題なので、遅くなるのか、Objective Cの数値タイプがうまくいかないのかはわかりませんが、手を使うことはできます。

4

1 に答える 1

4

通常の算術演算や、他の場所で主に演算に使用されるインスタンス変数として数値を格納する必要がある場合は、プリミティブ型 (double、CGFLoat、NSInteger) を使用します。必要に応じて、C 数学関数 (abs()、pow() など) を使用できます。NSTimeInterval は double の typedef であるため、2 つを入れ替えることができます。

数値の NSArray を作成する場合など、数値をオブジェクトとして格納する必要がある場合は、NSNumber を使用します。コア データやキー値コーディングなどの Cocoa の一部は、プリミティブ型よりも NSNumber を処理するため、そのような状況では通常よりも NSNumber を使用していることに気付くかもしれません。たとえば、次のように記述[timeKeepersArray valueForKeyPath:@"sum.seconds"]すると NSNumber が返されるため、変数をプリミティブに変換するのではなく、そのままにしておく方が簡単な場合があります。

NSNumber とプリミティブ型の間で変換するのは少量の余分なコードであるため、通常、アプリケーションは数値で何をしているかに応じてどちらかを優先することになります。

ああ、NSDecmial と NSDecimalNumber は?あまり心配する必要はありません。財務データを保存する場合など、本当に正確な小数演算が必要な場合にのみ表示されます。

于 2009-05-21T12:49:36.950 に答える