Ich schreibe ein OS X/iOS-Framework in Objective-C und möchte, dass das Framework für Entwickler nützlich ist, die entweder Objective-C oder Swift verwenden.Wie erstelle ich eine Enum für Swift und ObjC mit Standardbenennung?
In normalen Objective-C enums sind wie folgt definiert (dieses Beispiel stammt direkt aus Apple's own UIView class reference).
typedef enum {
UIViewAnimationCurveEaseInOut,
UIViewAnimationCurveEaseIn,
UIViewAnimationCurveEaseOut,
UIViewAnimationCurveLinear
} UIViewAnimationCurve;
Um diese Enum Swift freundlicher zu machen, ist mein Verständnis, dass es so erklärt werden sollte.
typedef NS_ENUM(NSInteger, UIViewAnimationCurve) {
UIViewAnimationCurve_EaseInOut,
UIViewAnimationCurve_EaseIn,
UIViewAnimationCurve_EaseOut,
UIViewAnimationCurve_Linear
};
Dies ermöglicht es der Enum im Stil let curve: UIViewAnimationCurve = .EaseInOut
von Swift zugegriffen werden.
Mein Problem ist, dass die NS_ENUM
10 und Unterstreichungsmethode merkwürdig benannte Enums produziert, wenn sie von Objective-C verwendet werden. Die Methode NS_ENUM
ermöglicht die Verwendung der Punktschreibweise von Swift, aber es bedeutet auch, dass jeder ObjC-Code einen Unterstrich im aufgezählten Namen verwenden muss, was unerwünscht ist.
Wie kann ich die Punktnotation für Swift zulassen und gleichzeitig Objective-C-Namenskonventionen für ObjC-Code beibehalten?