Das ist eine Art Anfängerfrage, also bitte mit mir ertragen.Ist es möglich, "Nur-Implementierungs" -Klassenmitglieder zu haben?
Ich habe eine Klasse, die eine Bibliothek von Drittanbietern verwendet (Oniguruma, wenn das wichtig ist). Ich möchte, dass Bibliotheksmethoden vollständig von mir selbst gestaltet werden, sodass ich jederzeit die zugrunde liegende Implementierung meiner Klasse wechseln kann. Etwas wie:
// MyClass.h
@interface MyClass : NSObject ...
- (int) doSomething;
// MyClass.m
#import "some_library.h"
@implementation MyClass
- (int) doSomething
{
//call library's specific stuff
}
So weit, so gut, aber jetzt bin ich um eine Instanzvariable in MyClass zu verwenden, die eine Bibliothek definierten Art hat (eine Struktur erklärt in „some_library.h“). Natürlich kann ich die Bibliothek direkt im Interface-Abschnitt importieren:
//MyClass.h
#import "some_library.h"
@interface MyClass : NSObject {
some_library_t blah;
}
- (int) doSomething;
@end
aber das ist genau das, was ich zu vermeiden, bin versucht - sich seine Implementierungsdetails machen Nutzer von MyClass.
Kann ich bibliothekspezifische Typen irgendwie von der Schnittstelle meiner Klasse "verstecken"? Was ist die Standardpraxis?
Meine schlecht, festgelegt. Ich habe mich zu sehr an C++ gewöhnt, um 'struct' zu verwenden. –