私がそれを理解する方法は、Objective Cの特別なことの1つは、メッセージをNULLに送信でき、クラッシュする代わりにそれらを無視することです。
要求されたインデックスが範囲外の場合、NSRangeExceptionを引き起こすのではなく、NSArrayがNULLオブジェクトを返さないのはなぜですか?
私がObjectiveCとNSArrayに期待することは次のとおりです。
NSArray *array = [NSArray arrayWithObjects:@"Object 1", @"Object 2", @"Object 3", nil];
for (int i = 0; i < 5; i++) {
NSString *string = [array objectAtIndex:i];
if (string) {
NSLog(@"Object: %@",string);
}
}
オブジェクトを含まない配列のインデックスにアクセスできるようにし、単にNULLを返します。次に、オブジェクトが存在するかどうかを確認できます。オブジェクトがインスタンス化されているかどうかを確認するなど、他の場所でもこれを行うことができます。
NSArray *array;
if (!array) {
array = [NSArray array];
}
これは理論に基づいた質問だと思いますが、興味があります:)