LoginSignup
2
2

More than 5 years have passed since last update.

NSArray にdefineマクロの数値を突っ込むと。。

Last updated at Posted at 2014-12-10

空になります。

※嘘でした。
下記のコードの場合、 0がnil と等価なので配列の終端として判断されてそれ以降処理されないということでした。
@kishikawakatsumi さんご指摘ありがとうございます。

#define ZERO 0
#define ONE  1
#define A    "a"
    NSLog(@"ONE = %d", ONE);
    NSArray *array = [NSArray arrayWithObjects:ZERO, ONE, A, nil];
    NSLog(@"array.count = %d", array.count);
    NSLog(@"array = %@", array);
    array = [NSArray arrayWithObjects:@"0", @"1", nil];
    NSLog(@"array.count = %d", array.count);
    NSLog(@"array = %@", array);
    for (int i = 0; i < array.count; i++) {
        id a = array[i];
        NSLog(@"class of a is: %@", [a class]);
    }

ログ

2014-12-10 18:22:43.297 TEST[76897:3889959] ONE = 1
2014-12-10 18:22:43.297 TEST[76897:3889959] array.count = 0
2014-12-10 18:22:43.298 TEST[76897:3889959] array = (
)
2014-12-10 18:22:43.298 TEST[76897:3889959] array.count = 2
2014-12-10 18:22:43.298 TEST[76897:3889959] array = (
    0,
    1
)
2014-12-10 18:22:43.298 TEST[76897:3889959] class of a is: __NSCFConstantString
2014-12-10 18:22:43.298 TEST[76897:3889959] class of a is: __NSCFConstantString

おーこわ。
やっぱり定数はconst やenum 使ったほうが良さそうだな、と思いました。
マクロ禁止したい。。

2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2