読者です 読者をやめる 読者になる 読者になる

Objective-cでNSArrayのcountではまったこと。

10月くらいからObjective-cを触っている。
結構毎日触っているんだけど、まだまだわからないことが多くて大変です。
さらにプライベートではwindows使っていて、Mac持っていないので、会社でしか触れていなくて。Mac買おうかなー。

ということで初歩的なところではまったのでメモ。

// 配列
NSArray array = @[@"赤",@"青",@"黄",nil];

for (NSIntger index = -1; index < [array count]; index++) {
if (index > 0) {
NSLog(@"%@", [array objectAtIndex:index]);
} else {
NSLog(@"%@", @"以下から選んで下さい。");
}
}

こんな感じで、ループさせてみた。まぁなにゆえ、ループ前にやらないのかとかあるけど、とりあえずそこはおいておいて。
このループ実は実行されない。なぜかというと[array count]の戻り値がNSUInteger。つまり、unsigned integer。
index=-1を比較する場合、indexがunsigned integerとして扱われ、-1はunsigned integerの一番大きな数字となる。

Javaにはないunsigned型があるので注意しましょうということでした。