Objective-C をやっていくうえで必要不可欠な NSLog に関してのメモ。
BOOL値以外にも、様々な値を出力してみます。
INDEX
NSLogでBOOL値を出力する
Objective-C の真偽値について
Objective-C はC言語で書かれたオブジェクト指向システムが採用されているため、使用できる真偽値が複数ある。これらをまとめると次のようになる。
変数 | 仕様 | 表記(数値) |
---|---|---|
BOOL | Objective-C |
YES (1) NO (0) |
bool | ISO C/C++ 標準 |
true (1) false (0) |
Boolean | Mac OS historical type |
true (1) false (0) |
最初から Objective-C だけでiOSアプリを開発するのであれば BOOL だけでよい、ということになる。
BOOL を NSLog で出力する
BOOL値も最終的には0と1で処理されるため double 型での出力となります。
- [code]
BOOL YESNO = YES;
NSLog(@”YESNO: %d”,YESNO);
[/code] - 出力結果
- [code]
YESNO: 1
[/code]
BOOL を YES or NO で出力する
「YES」「NO」での出力結果が欲しい場合は、NSLog に三項演算子を使用する。
- [code]
BOOL YESNO = YES;
NSLog(@”YESNO: %@”,(YESNO == 1 ? @”YES”:@”NO”));
[/code] - 出力結果
- [code]
YESNO: YES
[/code]
様々な型の値を NSLog で出力する
BOOLだけでは物足りないので、色々出力してみます。
-
改行/タブ
-
[code]
NSLog(@”AAA\nBBB\tCCC”);
[/code] - 結果
- [code]
AAA
BBB CCC
[/code]
-
int(signed int)
-
[code]
int myInt = -2147483648;
NSLog(@”myInt: %d”, myInt);
[/code] - 結果
- [code]
myInt: -2147483648
[/code]
-
unsigned int
- [code]
unsigned int myUnsignedInt = 4294967295;
NSLog(@”myUnsignedInt: %u”, myUnsignedInt);
[/code] - 結果
- [code]
myUnsignedInt: 4294967295
[/code]
-
float
- [code]
float myFloat = 3.14159265359f;
NSLog(@”myFloat: %u”, myFloat);
// 小数点第2位まで表示
NSLog(@”myFloat: %.2f”, floatValue);
[/code] - 結果
- [code]
myFloat: 3.14159265359
myFloat: 3.14
[/code]
-
char(signed char)
- [code]
char myChar = ‘A’;
NSLog(@”The letter %c is ASCII number %hhd”, myChar, myChar);
[/code] - 結果
- [code]
The letter A is ASCII number 65
[/code]
-
unsigned char
- [code]
unsigned char myUnsignedChar = 255;
NSLog(@”myUnsignedChar: %hhu”, myUnsignedChar);
[/code] - 結果
- [code]
myUnsignedChar: 255
[/code]
-
NSString
- [code]
NSString *myNSString = @”ABC”;
NSLog(@”myNSString: %@”, myNSString);
[/code] - 結果
- [code]
myNSString: ABC
[/code]
-
short(signed short)
- [code]
short myShort = -12345;
NSLog(@”myShort: %hd”, myShort);
[/code] - 結果
- [code]
myShort: -12345
[/code]
-
unsigned short
- [code]
unsigned short myUnsignedShort = 12345;
NSLog(@”myUnsignedShort: %hu”, myUnsignedShort);
[/code] - 結果
- [code]
muUnsignedShort: 12345
[/code]
-
long(signed long)
- [code]
long myLong = -9223372036854775808;
NSLog(@”myLong: %ld”, myLong);
[/code] - 結果
- [code]
myLong: -9223372036854775808
[/code]
-
unsigned long
- [code]
unsigned long myUnsignedLong = 18446744073709551615;
NSLog(@”myUnsignedLong: %lu”, myUnsignedLong);
[/code] - 結果
- [code]
myUnsignedLong: 18446744073709551615
[/code]
-
long long
- [code]
long long myLongLong = -9223372036854775808;
NSLog(@”myLongLong: %lld”, myLongLong);
[/code] - 結果
- [code]
myLongLong: -9223372036854775808
[/code]
-
unsigned long long
- [code]
unsigned long long myUnsignedLongLong = 18446744073709551615;
NSLog(@”myUnsignedLongLong: %llu”, myUnsignedLongLong);
[/code] - 結果
- [code]
myUnsignedLongLong: 18446744073709551615
[/code]
-
CGPoint
- [code]
CGPoint myCGPoint = CGPointMake(10, 20);
NSLog(@”pointX: %f pointY: %f”, myCGPoint.x, myCGPoint.y);
// string型に変換して出力
NSLog(@”myPoint: %@”, NSStringFromCGPoint(myCGPoint));
[/code] - 結果
- [code]
pointX: 10.000000 pointY: 20.000000
myPoint: {10, 20}
[/code]
-
pointer
- [code]
int i = 10;
int *myPointer = &i;
NSLog(@”Adress: %p”,myPointer);
NSLog(@”data : %d”,*myPointer);
[/code] - 結果
- [code]
Adress: 0x7fff5fbfc40c
data : 10
[/code]※アドレスの値は環境によって変わります
まとめ
C言語等に精通していれば問題ないのですが、unsigned short や unsigned long を出力しようとして戸惑うことがあります。とりあえずどんな型でも NSLog で出力して慣れておくといいかと思います。
この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。