ObjC可变参数:提示终止符

时间:2013-06-12 09:15:44

标签: objective-c variadic terminator

在Xcode中,如果我开始输入“[NSArray arrayWith”,我会得到以下提示:

id arrayWithObjects:(id), ..., nil

如您所见,终结符是明确的。

如果我自己编写一个采用可变参数的方法,我会得到这个提示

id myMethod:(id), ...

(终止符未显示)。我怎样才能提示我想要使用的终结符?

1 个答案:

答案 0 :(得分:1)

应用

__attribute__((sentinel))

属性为可变方法,或者使用

NS_REQUIRES_NIL_TERMINATION

宏,扩展到相同的。这样,编译器就会知道你的可变参数列表需要以0结尾。

- (void)foo:(id)arg1, ... NS_REQUIRES_NIL_TERMINATION
{
    va_list args;
    va_start(args, arg1);
    // ...
}