1

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

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

如您所见,终止符是显式的。

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

id myMethod:(id), ...

(终止符未显示)。如何提示我要使用的终结器?

4

1 回答 1

1

应用

__attribute__((sentinel))

属性到您的可变参数方法,或者,使用

NS_REQUIRES_NIL_TERMINATION

宏,扩展为相同。这样,编译器将知道您的可变参数列表需要以 0 结尾。

- (void)foo:(id)arg1, ... NS_REQUIRES_NIL_TERMINATION
{
    va_list args;
    va_start(args, arg1);
    // ...
}
于 2013-06-12T09:20:22.333 回答