在Objective-C中,为什么arrayWithObjects不会自动在列表末尾添加nil?

时间:2012-04-15 20:30:57

标签: objective-c cocoa

  

可能重复:
  Why does NSArray arrayWithObjects require a terminating nil?

据说我们需要始终使用nil作为arrayWithObjects的最后一项:

NSArray *wordList = [NSArray arrayWithObjects: @"hello", @"world", nil];

为什么arrayWithObjects不能要求nil,只为我们添加nil。有些论坛说这是因为nil充当了其他方法的哨兵......但这不是一个与该类用户无关的实施问题吗?

例如,如果其他语言需要

 list = [1 ,2, nil]    # Ruby

构建一个数组,可能有些奇怪。

1 个答案:

答案 0 :(得分:1)

因为自动nil插入需要一些语言或编译器扩展。

对于可变参数列表,实现所需的终结符知道何时停止读取。

幸运的是,你的编译器支持sentinel属性,所以如果你出现并注意你的编译器警告,这应该不是问题。