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