Problem mit Erweiterungen in Objective-C

8

Das folgende ist ein Codeausschnitt, der sich mit Klassenerweiterungen beschäftigt. Was ich versuche zu tun, ist eine zufällige ID namens interne ID (die später vom Programm verwendet wird), die in einer verschlüsselten Form im Speicher gespeichert wird. Der Code kann sowohl mit gcc als auch mit clam (ich führe Objective C über GNUStep unter Windows) mit verschiedenen Fehlermeldungen für jeden Compiler, der als Kommentar im Code erwähnt wird, nicht kompilieren.

Bitte beachten Sie, dass ich mir der Tatsache bewusst bin, dass dieses Problem leicht gelöst werden kann, indem die Verwendung von Erweiterungen ignoriert und Methoden und Eigenschaften in der Hauptschnittstelle (d. h. nach der Anweisung #import) deklariert werden. Der einzige Grund, warum ich mit Erweiterungen gehe, ist, dass diese Klasse von einigen anderen Unterklassen geerbt wird, auf die die Eigenschaft "internalID" nicht zugegriffen werden kann.

%Vor%

Die Kompilierungszeichenfolge für gcc, die ich verwende, ist gcc -o _exec fwdORM.m -I /GNUstep/System/Library/Headers -L /GNUstep/System/Library/Libraries -lobjc -lgnustep-base -fconstant-string-class=NSConstantString

Mein GNUmakefile für clang ist wie folgt:

%Vor%

Vielen Dank im Voraus.

    
hecate 19.03.2017, 02:57
quelle

1 Antwort

4

Versuchen Sie, dies zu implementieren, indem Sie ein @property verwenden, das in der Klassenerweiterung anstelle eines ivars deklariert ist:

%Vor%

Dies ist eine Standard-Semantik für die Variable private und hat wahrscheinlich eine bessere Chance, Compiler-Unterstützung zu erhalten.

    
fullofsquirrels 19.04.2017, 17:42
quelle