Это своего рода вопрос новичков, поэтому, пожалуйста, несите меня.Возможно ли иметь членов класса «только для реализации»?
У меня есть класс, в котором используется сторонняя библиотека (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 осведомлен о деталях реализации.
Могу ли я как-то «скрыть» типы, специфичные для библиотеки, из интерфейса моего класса? Какова стандартная практика?
Мой плохо, фиксированы. Я слишком привык к удобству C++ для использования 'struct'. –