Для объявления функции Obj-C нужна точка с запятой? - PullRequest
0 голосов
/ 25 октября 2011

Это действительно просто, но сводит меня с ума.

Я пытаюсь реализовать простую функцию в моем коде Objective-C. Когда я пишу это,

NSInteger Sort_Function(id id1, id id2, void *context) {

}

Я получаю ошибку, что в конце объявления ожидалась точка с запятой. Тем не менее, я видел этот тип синтаксиса во многих, многих примерах. Что я мог делать не так? Если это имеет значение, то это приложение для iOS, а функция вложена в предложение if. Заранее спасибо.

1 Ответ

6 голосов
/ 25 октября 2011

Функция определение - этот фрагмент, который вы разместили, - "вложен в if предложение"?К сожалению, это недопустимо в C (и Obj-C по расширению) - все объявления и определения функций должны находиться на верхнем уровне файла.Внутри секции @implementation также есть опция:

// Start of file

// Declaration or definition valid here
void my_func(void);    // Declaration
void my_other_func(void);
void my_third_func(void);

void my_func(void) {    // Definition
    return;
}

@implementation MyClass

// Definition also valid here
void my_other_func(void) {
    return;
}

- (void) myMethod {
    if( YES ){
        void my_third_func(void) {    // Invalid here
            return;
        }
    }
}

@end

Возможно, вы путаете синтаксис функции с синтаксисом блока ?

// The caret indicates definition of a block, sort of an anonymous function
int (^myBlock)(int);
myBlock = ^int (int my_int) {
    return my_int;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...