это вопрос для начинающих, поэтому, пожалуйста, потерпите меня.
У меня есть класс, который использует стороннюю библиотеку (oniguruma, если это имеет значение). Я хочу, чтобы библиотечные методы были полностью декорированы моими собственными, чтобы я мог переключать базовую реализацию моего класса в любое время. Что-то вроде:
// MyClass.h
@interface MyClass : NSObject ...
- (int) doSomething;
// MyClass.m
#import "some_library.h"
@implementation MyClass
- (int) doSomething
{
//call library's specific stuff
}
Пока все хорошо, но теперь мне нужно использовать переменную экземпляра в MyClass, которая имеет некоторый тип, определенный библиотекой (структура, объявленная в "some_library.h"). Конечно, я могу импортировать библиотеку прямо в разделе интерфейса:
//MyClass.h
#import "some_library.h"
@interface MyClass : NSObject {
some_library_t blah;
}
- (int) doSomething;
@end
но это именно то, чего я пытаюсь избежать, - чтобы пользователи MyClass знали о деталях его реализации.
Можно ли как-то "спрятать" специфичные для библиотеки типы от интерфейса моего класса? Что такое стандартная практика?