Fast Enumeratorの最後の"nil"
CocoaでFast Enumeratorを使っていて、ちょっとハマったところがあったので記録。
Fast Enumeratorとは、たとえばこんな感じです。
NSArray* arr = [NSArray arrayWithObjects:@"1", @"2", @"3", nil]; id i; for (i in arr) { NSLog(@"%@", i); }
この後、変数iには何が入っているでしょう。
答えはnilです。最後の値が入っているかと思って勘違いしていました。いや、正確にはnilの前の値が入っていると勘違いしていました。
よく考えると、NSArrayのインスタンスを作る時に、最後にnilを加えていますよね。iにnilが代入されて、その評価値もnilになることでfor文が終了するわけです。だから、iにnilが入っているというのは当たり前。
こんなくだらないことでハマるとは。みなさん気をつけましょう。