Примените атрибут
__attribute__((sentinel))
к вашему вариативному методу или, наоборот, используйте макрос
NS_REQUIRES_NIL_TERMINATION
, который расширяется до того же самого. Таким образом, компилятор будет знать, что ваш список вариационных аргументов должен быть 0-конечным.
- (void)foo:(id)arg1, ... NS_REQUIRES_NIL_TERMINATION
{
va_list args;
va_start(args, arg1);
// ...
}