我理解它的方式,Objective C 的特别之处之一是您可以将消息发送到 NULL,它只会忽略它们而不是崩溃。
如果请求的索引超出范围而不是导致 NSRangeException,为什么 NSArray 不只是返回 NULL 对象?
我对 Objective C 和 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];
}
我意识到这是一个基于理论的问题,但我很好奇:)