在Xcode中,如果我开始输入“[NSArray arrayWith”,我会得到以下提示:
id arrayWithObjects:(id), ..., nil
如您所见,终结符是明确的。
如果我自己编写一个采用可变参数的方法,我会得到这个提示
id myMethod:(id), ...
(终止符未显示)。我怎样才能提示我想要使用的终结符?
答案 0 :(得分:1)
应用
__attribute__((sentinel))
属性为可变方法,或者使用
NS_REQUIRES_NIL_TERMINATION
宏,扩展到相同的。这样,编译器就会知道你的可变参数列表需要以0结尾。
- (void)foo:(id)arg1, ... NS_REQUIRES_NIL_TERMINATION
{
va_list args;
va_start(args, arg1);
// ...
}