NSArray arrayWithObjects:如果nil用于标记数组结尾,我可以... nil,nil]?

hzx*_*zxu 4 null objective-c nsarray

如果nil用于标记参数的结尾,那么我可以使用:

[NSArray arrayWithObjects:obj1, obj2, nil, nil, nil];
Run Code Online (Sandbox Code Playgroud)

作为第一个零标记数组结束和之后的两个nils将被忽略?

我有两个相反的答案,并会尝试一下.

更新:

我需要这样做的原因是,我需要创建一个UIAlertView,它可能有按钮:'OK'或'Call'和'Cancel',所以'OK'或'Cancel'是取消按钮,"呼叫"是一种情况下的其他按钮,在其他情况下,我不需要任何其他按钮,这就是我需要这样做的原因.

Kri*_*dra 12

nil创建时放置NSArray,nil添加的对象最多.之后的nil对象和对象将被忽略.刚完成,就不能添加 nilNSMutableArray也(说使用addObject:方法),并且这样做将引发异常.

你可以[NSNull null];在创建NSArray时使用.


del*_*ser 5

向末尾添加nil并不是为了向数组添加nils,它只是C处理...变量参数列表的工件.它与NSArray或NSMutableArray无关,你也无法存储nil.

所以编译器是否接受,nil,nil,nil实际上是无关紧要的.编译器将在第一个零时停止读取.并且首先编写该代码表明了对obj C集合和var arg方法的误解.

为什么不使用新的文字语法而只是说

NSArray *myArray = @[@"bla", @"bla", @"bla"];
Run Code Online (Sandbox Code Playgroud)

无论哪种方式,额外的内容都不在您提供的语法中.