为什么当使用initWithObjects初始化数组时,最后一项是“nil”?

时间:2011-07-05 21:11:10

标签: iphone objective-c xcode

  

可能重复:
  NSArray creation with variable argument lists in Objective-C

实际上这个问题非常简单。 Xcode建议最后一项是“零”,我想知道为什么。

array1 = [[NSArray alloc] initWithObjects: @"one", @"two", @"three", @"four", nil];

2 个答案:

答案 0 :(得分:1)

null-termination(nil)字符用于确定数组的长度。无法正确终止数组可能导致缓冲区溢出和其他未定义的行为。

答案 1 :(得分:0)

除了重定向到关于NSArray initWithObjects的文档之外,值得注意的是,通常情况下,使用可变函数(即采用可变数量参数的函数),要么预先指定参数的数量,要么以某种方式终止参数列表。 Nil是终止参数列表的好方法,是initWithObjects采用的方法。