Как сделать предварительную декларацию для частного метода?

Я организую свои методы в группы, используя знак #pragma в реализации. Но иногда код реализации метода появляется под кодом, вызывающим этот метод, и я получаю предупреждения "Метод экземпляра не найден". Это происходит, когда я использую частные методы. Как это исправить?

3 ответа

Решение

Самый простой способ - использовать анонимную категорию. Добавить что-то вроде этого в верхней части вашего .m файл, перед вашим @implementation:

@interface MyClass()
- (void)myPrivateMethod;
@end

В этом случае вы должны использовать расширение класса внутри вашего файла реализации для определения этих методов. Таким образом, ваш "публичный" API все еще определяется в вашем заголовочном файле, а ваш файл реализации содержит определение ваших псевдоприватных методов.

YourClass.m

@interface MyClass()

- (void)myPrivateMethod;

@end


@implementation MyClass

- (void)myPublicMethod
{
    // This will not throw an error or warning
    [self myPrivateMethod];
} 

- (void)myPrivateMethod
{
    // Do something
}

@end

В вашем файле реализации Class.m вы можете добавить интерфейсный раздел в начале и объявить там частные функции:


@interface YourClassName (private)

-(void)aPrivateMethod:(NSString*)aParameter;
...

@end

@implementation YourClassName
...
@end

Другие вопросы по тегам