Zadeklarowałem wyliczenie w moim pliku implementacyjnym, jak pokazano poniżej, i zadeklarowałem zmienną tego typu w moim interfejsie jako PlayerState thePlayerState; i użyłem zmiennej w moich metodach. Ale dostaję błędy stwierdzające, że nie jest to zadeklarowane. Jak poprawnie zadeklarować i użyć zmiennej typu PlayerState w moich metodach:
W pliku .m
@implementation View1Controller
typedef enum playerStateTypes
{
PLAYER_OFF,
PLAYER_PLAYING,
PLAYER_PAUSED
} PlayerState;
w pliku .h:
@interface View1Controller : UIViewController {
PlayerState thePlayerState;
w jakiejś metodzie w pliku .m:
-(void)doSomethin{
thePlayerState = PLAYER_OFF;
}
iphone
objective-c
c
RexOnRoids
źródło
źródło
Odpowiedzi:
Musisz
typedef
znajdować się w pliku nagłówkowym (lub innym pliku, który jest#import
edytowany w nagłówku), ponieważ w przeciwnym razie kompilator nie będzie wiedział, jaki rozmiar utworzyćPlayerState
ivar. Poza tym wydaje mi się to w porządku.źródło
NS_ENUM
wyliczenia za pomocą w Celu-C, jeśli chcesz, aby wyliczenie było dostępne w kodzie Swift.typedef
zadeklarowany w.m
pliku, który kompiluje się i działa dobrze.Apple udostępnia makro, które pomaga zapewnić lepszą zgodność kodu, w tym Swift. Korzystanie z makra wygląda następująco.
Udokumentowane tutaj
źródło
NS_ENUM
), ponieważ jest bardziej nowoczesne i jest teraz wymagane w Objective-C, jeśli chcesz, aby twoje wyliczenie było dostępne w kodzie Swift.W .h:
źródło
W przypadku bieżących projektów możesz użyć makra
NS_ENUM()
lubNS_OPTIONS()
.źródło
NS_ENUM
wyliczenia za pomocą w Objective-C, jeśli chcesz, aby wyliczenie było dostępne w kodzie Swift.Oto jak Apple robi to dla klas takich jak NSString:
W pliku nagłówkowym:
Zobacz Wskazówki dotyczące kodowania na stronie http://developer.apple.com/
źródło
Polecam użycie NS_OPTIONS lub NS_ENUM. Możesz przeczytać więcej na ten temat tutaj: http://nshipster.com/ns_enum-ns_options/
Oto przykład z mojego własnego kodu używającego NS_OPTIONS, mam narzędzie, które ustawia podwarstwę (CALayer) na warstwie UIView w celu utworzenia granicy.
H. plik:
Plik .m:
źródło