Следующий код выдает ошибку Нет видимых @interface для «Бар» заявляет селектор «barMethod» на второй линии реализации -[Foo fooMethod]
:вперед декларация Objective-C метод расширения класса
// FooBar.m
#import "FooBar.h"
//////////////////////////////////
@implementation Foo
- (void)fooMethod {
Bar *bar = [Bar new];
[bar barMethod]; // Error: No visible @interface for 'Bar' declares the selector 'barMethod'
}
@end
//////////////////////////////////
@interface Bar()
- (void)barMethod;
@end
@implementation Bar
- (void)barMethod {
// do something
}
@end
Is там любой способ переслать объявление -[Bar barMethod]
внутри FooBar.m кроме перемещения Bar
расширение класса выше Foo
реализация (что не очень удобно время от времени)?
Близко связанный: [Использовать расширение класса для выборочной видимости в ObjC] (http://stackoverflow.com/q/7110525) –
@JoshCaswell Хорошее обходное решение, но изменить порядок проще –