Как объявить блочную функцию с переменными аргументами в Objective-C? - PullRequest
0 голосов
/ 10 апреля 2019

Как объявить блочную функцию с переменными аргументами в Objective-C?

NSString *(^fn)(va_list) = ^(...) {  // ?

};

1 Ответ

2 голосов
/ 10 апреля 2019

У вас есть две проблемы:

  1. Аргумент A va_list не совпадает с аргументом ....
  2. Функция C с переменным числом аргументов должна иметь хотя бы один именованный аргумент.

Вот пример, который компилируется:

NSString *(^fn)(NSString *format, ...) = ^NSString *(NSString *format, ...){
    va_list ap;
    va_start(ap, format);
    NSString *answer = [[NSString alloc] initWithFormat:format arguments:ap];
    va_end(ap);
    return answer;
};
...