在Xcode中,如果我开始输入"[NSArray arrayWith"我得到以下提示:
id arrayWithObjects:(id), ..., nil
可以看到,终止符是显式的。
如果我自己编写一个接受可变参数的方法,我会得到这个提示
id myMethod:(id), ...
(不显示终止符)。我如何暗示我想使用的终结器?
应用
__attribute__((sentinel))
属性设置为变量方法,或者使用
NS_REQUIRES_NIL_TERMINATION
宏,展开为相同的。这样,编译器就会知道你的可变参数列表需要以0结尾。
- (void)foo:(id)arg1, ... NS_REQUIRES_NIL_TERMINATION
{
va_list args;
va_start(args, arg1);
// ...
}