初期化
C型の数値をNSNumberへラップ
[array addObject:@100]; //int [array addObject:@24U]; //unigned [array addObject:@11L]; //long [array addObject:@150LL]; //long long [array addObject:@3.13159f]; //float [array addObject:@3.1415926535]; //double [array addObject:@YES]; //BOOL
C変数のボクシング
int val1 = 10; long val2 = 11L; float val3 = 3.141592f;
NSNumber *num1 = @(val1); // 同じ事をする NSNumber *num =[NSNumber numberWithInt: val1]; NSNumber *num2 = @(val2); NSNumber *num3 = @(val3);
数式のボクシング
double radian = 180.0 / M_PI; NSNumber *num = @(radian - M_PI);
enum定数やconst定数などのボクシング
#pragma
typedef enum { // 列挙型 Zero, One, Two, Three } Numbers;
const int HAPPY_NUMBER = 8;
NSNumber *num1 = @(Two); NSNumber *num2 = @(HAPPY_NUMBER);
操作
ラップしないと、コレクションクラスへ格納できない
NSNumber *numObj = [NSNumber numberWithFloat:3.1416f]; [anArray addObject:numObj];
リテラル記法へメソッドとドット記法の適用
NSString *strValue1 = [@11L stringValue];
NSString *strValue2 = @(3.141592f).stringValue;
double root3 = 1.732; NSString *strValue3 = @(root3).stringValue;
リテラルから文字列へ変換
const char *cString = [[@(3.141592f) stringValue] UTF8String]; NSString *NumberStrng = [NSString stringWithUTF8String:cString];
float aFloat = [NumberStrng floatValue]; NSNumber *aFloatNumber = [NSNumber numberWithFloat:aFloat];