空になります。
※嘘でした。
下記のコードの場合、 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 使ったほうが良さそうだな、と思いました。
マクロ禁止したい。。