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