С каких пор Xcode больше не требует форвардных объявлений и почему?

Я заметил, что Xcode (или, точнее, компилятор Apple LLVM?) больше не требует запросов прямого метода. Другими словами, следующий код строит без предупреждений:

@implementation Foo
-(void) foo {
 [self bar];
}
-(void) bar {}
@end

Это использовалось для предупреждения в -foo, говорящего, что Foo может не отвечать на -bar, правильно? Является ли компилятор умнее сейчас или это что-то еще? Im с использованием Xcode 4.3.1 плюс Apple LLVM-компилятор 3.1.

2 ответа

Это определенно изменилось, и похоже, что такие передовые декларации не требуются в Xcode 4.3 и более поздних версиях. Ср Частные методы в Objective-C, в Xcode 4.3 Мне больше не нужно объявлять их в моем файле реализации?.


В моем XCode 4.2 предупреждение все еще существует, более того, когда включена ARC, это ошибка, а не только предупреждение.

licensed under cc by-sa 3.0 with attribution.