Как сделать предварительную декларацию для частного метода?
Я организую свои методы в группы, используя знак #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