Это будет компилироваться и нормально работать без объявления:
- (void)foo {
}
- (void)bar {
[self foo];
}
Но в последний раз, когда я проверял, появится предупреждение:
- (void)bar {
[self foo];
}
- (void)foo {
}
Другими словами, это то же самое, что и в C: объявление не требуется, если определение предшествует любому использованию. C требует этого, чтобы избежать добавления дополнительного прохода в компилятор (один для поиска функций, а второй для их фактического анализа). Что касается того, следует ли вам объявлять их, когда в этом нет необходимости, это действительно зависит от стиля кодовой базы, с которой вы работаете.
Что касается других языков, которые не требуют объявлений, некоторые просто выполняют дополнительный проход, в то время как другим не нужно знать количество и типы аргументов или тип возвращаемого значения во время компиляции (вместо этого они ищут функции во время выполнения , или у них нет для начала строго типизированных переменных, поэтому это не «имеет значение»), поэтому они могут просто пропустить его.
person
Anomie
schedule
20.07.2011