为什么如果请求的索引超出范围而不是导致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];}
我意识到这是一个基于理论的问题,但我很好奇:)
解决方法 消息到nil是语言级功能,而不是框架API功能.NSArray(和其他类)抛出异常来指示程序员错误是在设计API时做出的有意识的设计决策(~1993).正如凯文和理查德所指出的那样,无论如何,消息不是错误的,而超出界限则是错误输入的情况.
你会在哪里划线? substringWithRange:应该接受任何旧输入吗?怎么样的setobject:atIndex:?
通过在indexOfObject的边界异常上创建NSArray @throw:它使API保持一致;任何超出范围的索引(或范围)都将是@throw.
总结以上是内存溢出为你收集整理的objective-c – 为什么NSArray不为不存在的索引返回NULL?全部内容,希望文章能够帮你解决objective-c – 为什么NSArray不为不存在的索引返回NULL?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)