Каково значение точки с запятой в определении метода Objective-C? - PullRequest
4 голосов
/ 07 марта 2011

Я был немного озадачен, когда, просматривая более неясный код реализации в одном из моих классов, я нашел несколько определений методов, которые выглядели так:

- (void)doSomething; {
    // Something...
}

- (void)doSomethingWithSomething:(Something*)aSomething; {
    // Something with aSomething...
}

Это явно артефакт от копирования и вставки объявлений метода в блок реализации и последующего игнорирования удаления точек с запятой из объявления при предоставлении определения.

Путаница связана с тем, что эти определения методов не только компилируются, но и выполняются идеально. Я видел их и сразу же ожидал ошибок компиляции, как, например, то, что вы могли бы ожидать, если бы попытались использовать C-сумасшествие, например:

void doSomething(); {
    /* Something */
}

Итак, возникает вопрос: "Что вообще делает эта точка с запятой?" Кажется, что он абсолютно ничего не делает, и в этом случае возникает вопрос: «Почему компилятор допускает одну случайную точку с запятой в этом конкретном месте?» Нет точки с запятой, это нормально, но, видимо, тоже хорошо, но больше ли это ошибка компиляции?

1 Ответ

5 голосов
/ 07 марта 2011

Это ничего не делает.Это просто, чтобы помочь вам, когда вы копируете / вставляете объявления методов из заголовка в файл реализации.Вам не нужно удалять точку с запятой, так что это сэкономит вам пару нажатий клавиш.Эта точка с запятой совершенно необязательна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...