9

基本的な C 型 (int、float、double) の代わりに Foundation FrameworkのNSNumberを使用する利点は何ですか?

NSNumber の使用:

NSNumber *intNumber;
NSInteger myInt;
intNumber = [NSNumber numberWithInteger: 100];
myInt = [intNumber integerValue];

純粋な C を使用する:

int intNumber;
intNumber = 100;

Cを使用する方がはるかに簡単で経済的です。

NSNumber がオブジェクト (またはクラス?) 型であることは知っていますが、なぜそれらを単純な C 変数の代わりに使用するのでしょうか? いつ使用する必要がありますか?

4

3 に答える 3

18

の目的NSNumberは、単純にプリミティブ型をオブジェクト (ポインター型) にボックス化することです。そのため、ポインター型の値が機能する必要がある状況でそれらを使用できます。

NSNumber一般的な例の 1 つ: Core Data エンティティで数値を永続化する場合に使用する必要があります。

計算にはプリミティブを使用できますし、使用する必要があります (小数を使用する場合は、NSDecimalまたはを使用しますNSDecimalNumber)。

于 2011-02-18T20:43:01.537 に答える
3

数値をオブジェクトとして渡す必要がある場合は、 を使用しますNSNumber

算術演算を行う必要がある場合は、intandを使用できますdouble。32/64 ビットの問題を気にしたくない場合は、 と を使用できNSIntegerますCGFloat

于 2011-02-18T20:56:27.280 に答える
0

特定のオブジェクトでパラメーターの受け渡しを処理するため、基本的なデータ型を使用すると機能しません。また、NSNumber クラスは、値を他のデータ型にすばやく変換するためのオプションを提供します。

于 2011-02-18T20:43:55.923 に答える