Objective-C:デバッグの基本!NSLogでBOOLや様々な値を出力する

Objective-C をやっていくうえで必要不可欠な NSLog に関してのメモ。
BOOL値以外にも、様々な値を出力してみます。

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 型での出力となります。

BOOL YESNO = YES;
NSLog(@"YESNO: %d",YESNO);
出力結果
YESNO: 1

BOOL を YES or NO で出力する

「YES」「NO」での出力結果が欲しい場合は、NSLog に三項演算子を使用する。

BOOL YESNO = YES;
NSLog(@"YESNO: %@",(YESNO == 1 ? @"YES":@"NO"));
出力結果
YESNO: YES

様々な型の値を NSLog で出力する

BOOLだけでは物足りないので、色々出力してみます。

改行/タブ

NSLog(@"AAA\nBBB\tCCC");
結果
AAA
BBB    CCC

int(signed int)

int myInt = -2147483648;
NSLog(@"myInt: %d", myInt);
結果
myInt: -2147483648

unsigned int

unsigned int myUnsignedInt = 4294967295;
NSLog(@"myUnsignedInt: %u", myUnsignedInt);
結果
myUnsignedInt: 4294967295

float

float myFloat = 3.14159265359f;
NSLog(@"myFloat: %u", myFloat);
// 小数点第2位まで表示
NSLog(@"myFloat: %.2f", floatValue);
結果
myFloat: 3.14159265359
myFloat: 3.14

char(signed char)

char myChar = 'A';
NSLog(@"The letter %c is ASCII number %hhd", myChar, myChar);
結果
The letter A is ASCII number 65

unsigned char

unsigned char myUnsignedChar = 255;
NSLog(@"myUnsignedChar: %hhu", myUnsignedChar);
結果
myUnsignedChar: 255

NSString

NSString *myNSString = @"ABC";
NSLog(@"myNSString: %@", myNSString);
結果
myNSString: ABC

short(signed short)

short myShort = -12345;
NSLog(@"myShort: %hd", myShort);
結果
myShort: -12345

unsigned short

unsigned short myUnsignedShort = 12345;
NSLog(@"myUnsignedShort: %hu", myUnsignedShort);
結果
muUnsignedShort: 12345

long(signed long)

long myLong = -9223372036854775808;
NSLog(@"myLong: %ld", myLong);
結果
myLong: -9223372036854775808

unsigned long

unsigned long myUnsignedLong = 18446744073709551615;
NSLog(@"myUnsignedLong: %lu", myUnsignedLong);
結果
myUnsignedLong: 18446744073709551615

long long

long long myLongLong = -9223372036854775808;
NSLog(@"myLongLong: %lld", myLongLong);
結果
myLongLong: -9223372036854775808

unsigned long long

unsigned long long myUnsignedLongLong = 18446744073709551615;
NSLog(@"myUnsignedLongLong: %llu", myUnsignedLongLong);
結果
myUnsignedLongLong: 18446744073709551615

CGPoint

CGPoint myCGPoint = CGPointMake(10, 20);
NSLog(@"pointX: %f pointY: %f", myCGPoint.x, myCGPoint.y);
// string型に変換して出力
NSLog(@"myPoint: %@", NSStringFromCGPoint(myCGPoint));
結果
pointX: 10.000000 pointY: 20.000000
myPoint: {10, 20}

pointer

int i = 10;
int *myPointer = &i;
NSLog(@"Adress: %p",myPointer);
NSLog(@"data : %d",*myPointer);
結果
Adress: 0x7fff5fbfc40c
data : 10

※アドレスの値は環境によって変わります

まとめ

C言語等に精通していれば問題ないのですが、unsigned short や unsigned long を出力しようとして戸惑うことがあります。とりあえずどんな型でも NSLog で出力して慣れておくといいかと思います。

この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

siro:chro 無料ゲーム SQN をリリースしました

img_sqn_00

sirochro 初の無料ゲームアプリ SQN をリリースしました。
記事:SQN: iOS 無料ゲームアプリ SQN - Sequential Numbers をリリース
ちょっとした時間に楽しめる完全無料のゲームなっていますので、是非ダウンロードして遊んでみてください。

↓SQN のダウンロードはこちらから

Related Contents

Pickup Contents