如果nil旨在标记参数的结尾,那么我可以使用:
[NSArray arrayWithObjects:obj1, obj2, nil, nil, nil];
由于第一个 nil 标记数组结束,之后的两个 nil 将被忽略?
我得到了两个相反的答案,并会尝试一下。
更新:
我需要这样做的原因是我需要创建一个 UIAlertView,它可能有按钮:"确定",或者"呼叫"和"取消",所以"确定"或"取消"是取消按钮,而"呼叫"是一种情况下是其他按钮,在其他情况下,我不需要任何其他按钮,这就是我需要这样做的原因。
当你在创建NSArray
时放置nil
时,nil
添加该对象。之后的nil
和对象将被忽略。只是为了完成,您也不能将nil
添加到NSMutableArray
(例如使用addObject:
方法),这样做会引发异常。
您可以在创建 NSArray 时放置[NSNull null];
。
在末尾添加 nil 并不是为了将 nils 添加到数组中,它只是 C 如何处理的工件......变量参数列表。 它与NSArray或NSMutableArray无关,您不能在其中存储nil。
因此,编译器是否接受,nil,nil,nil实际上无关紧要。 编译器将在第一个 nil 时停止读取。 首先编写代码表明了对obj C集合和var arg方法的误解。
为什么不使用新的文字语法,只是说
NSArray *myArray = @[@"bla", @"bla", @"bla"];
无论哪种方式,额外的 nils 在您提供的语法中都不重要。
是的,确切地说,这是可以做到的。第一个之后的 nils 将被忽略。
为什么要故意在数组中添加 nil?我想你最好停下来,三思而后行,为什么你必须这样做。如果您不确定阵列的大小,可以随时使用 NSMutableArray。