Ich habe eine Aufzählung in meiner Implementierungsdatei wie unten gezeigt deklariert und eine Variable dieses Typs in meiner Schnittstelle als PlayerState thePlayerState deklariert. und verwendete die Variable in meinen Methoden. Aber ich bekomme Fehler, die besagen, dass es nicht deklariert ist. Wie deklariere und verwende ich eine Variable vom Typ PlayerState in meinen Methoden korrekt?:
In der .m-Datei
@implementation View1Controller
typedef enum playerStateTypes
{
PLAYER_OFF,
PLAYER_PLAYING,
PLAYER_PAUSED
} PlayerState;
in der .h-Datei:
@interface View1Controller : UIViewController {
PlayerState thePlayerState;
in einer Methode in der .m-Datei:
-(void)doSomethin{
thePlayerState = PLAYER_OFF;
}
iphone
objective-c
c
RexOnRoids
quelle
quelle
Antworten:
Sie
typedef
müssen sich in der Header-Datei befinden (oder in einer anderen Datei, die#import
in Ihrem Header enthalten ist), da der Compiler sonst nicht weiß, welche Größe derPlayerState
ivar haben soll. Davon abgesehen sieht es für mich in Ordnung aus.quelle
NS_ENUM
Objective-C deklarieren, wenn Ihre Aufzählung im Swift-Code verfügbar sein soll.typedef
in der.m
Datei deklariert und es kompiliert und läuft gut.Apple bietet ein Makro für eine bessere Codekompatibilität, einschließlich Swift. Die Verwendung des Makros sieht folgendermaßen aus.
Hier dokumentiert
quelle
NS_ENUM
), da sie moderner ist und jetzt in Objective-C erforderlich ist, wenn Ihre Aufzählung in Swift-Code verfügbar sein soll.In der .h:
quelle
Bei aktuellen Projekten möchten Sie möglicherweise die Makros
NS_ENUM()
oder verwendenNS_OPTIONS()
.quelle
NS_ENUM
Objective-C deklarieren, wenn Ihre Enum im Swift-Code verfügbar sein soll.So macht es Apple für Klassen wie NSString:
In der Header-Datei:
Weitere Informationen finden Sie in den Codierungsrichtlinien unter http://developer.apple.com/.
quelle
Ich empfehle die Verwendung von NS_OPTIONS oder NS_ENUM. Weitere Informationen finden Sie hier: http://nshipster.com/ns_enum-ns_options/
Hier ist ein Beispiel aus meinem eigenen Code mit NS_OPTIONS. Ich habe ein Dienstprogramm, das eine Unterebene (CALayer) auf der Ebene einer UIView festlegt, um einen Rahmen zu erstellen.
Die h. Datei:
Die .m-Datei:
quelle