MENU
コンテンツ再構築中

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

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で共有していただければ幸いです。

Please share it!
  • URLをコピーしました!
  • URLをコピーしました!
INDEX