2013-06-12 4 views
1

В Xcode, если я начну печатать «[NSArray arrayWith» Я получаю следующую подсказку:ObjC VARIADIC аргументы: подсказка терминатор

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

Как вы можете видеть, терминатор явно.

Если я пишу метод, принимая VARIADIC аргументы себя, я получаю эту подсказку

id myMethod:(id), ... 

(терминатор не показан). Как я могу называть терминатор, который я хочу использовать?

ответ

1

Применить атрибут

__attribute__((sentinel)) 

к вашему VARIADIC методу, или в качестве альтернативы, используйте

макрос, который расширяется в то же самое. Таким образом, компилятор будет знать, что ваш список вариационных аргументов должен быть 0-завершен.

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

Отлично. Есть ли способ намекнуть на пользовательский терминатор (я имею в виду, что-то отличное от нуля)? – user732274

+0

@ user732274 Я так не думаю. –

Смежные вопросы