2013-08-23 8 views
5

Mieszkam w ciemno tematycznej aplikacji na iOS 6 i 7. Rozumiem, że mogę zadzwonić pod numer [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];, aby pasek stanu iOS 7 pasował do aplikacji o ciemnym kolorze.#ifdef #else #endif wybierz wersję i funkcję iOS sdk?

Problem polega na tym, że zamierzam przesłać swoją aplikację do App Store, a obecnie Xcode 5 nie jest na to gotowy, więc do wykonania tego zadania muszę użyć Xcode 4.6.x. Jednak z Xcode 4.6, nie jestem w stanie skompilować nowej metody z iOS 7. Myślę, że muszę zrobić coś w stylu "", jeśli ios7 "" następnie zrobić [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; i zmienić położenie okna mojej aplikacji.

Staram się robić to z #ifdef ... #else ... Ten kod jest [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; wewnątrz viewDidLoad.

Czy ktoś może pomóc zrozumieć, jak używać #ifdef ... z metodą w niektórych funkcjach.

Wielkie dzięki!

+1

Właśnie tutaj ten odpowiedział: http://stackoverflow.com/questions/18404746/disable-clang-error-with-pragma/18406309#18406309 – rmaddy

+0

Właśnie rozwiązać mój problem. dzięki – HYC

+0

Mój przyjaciel, jabłko nie zaakceptuje żadnej kompilacji stworzonej przez wersję xcode niższą niż 5. Spróbuj więc użyć xcode 5 i nowszych wersji. –

Odpowiedz

20

Chociaż nie jestem w 100% pewny, czy mogę w pełni odpowiedzieć na to pytanie bez naruszenia NDA, zrobię co w mojej mocy, aby wskazać wam właściwy kierunek.

Musisz użyć __IPHONE_* #defines w Availability.h

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_6_0 
    // iOS 6+ code here 
#else 
    // Pre iOS 6 code here 
#endif 

Należy pamiętać, że #if i #ifdef określi, jaki kod jest skompilowany, to nie jest to mechanizm wykrywania wykonawcze.

Możesz łatwo uzyskać dostęp do Availability.h, używając opcji Otwórz szybko i wpisując Dostępność.

+0

Nie ma nic w twojej odpowiedzi, która jest objęta NDA. Dlaczego tak myślisz? Obsługiwane są tylko specyficzne interfejsy API dla systemu iOS 7. – rmaddy

+0

Z pewnością zawartość Availability.h dostarczona w zestawie SDK iOS 7 jest objęta NDA? Niezależnie od tego, ta odpowiedź powinna być łatwo dostosowana do iOS 7, nawet bez patrzenia na plik nagłówkowy. I + 1'd i głosowałem na twoją drugą odpowiedź :) –

2

spojrzeć na respondsToSelector

[delegate respondsToSelector:@selector(myMethod:)] 
+3

To nie pomaga. Kompilator nadal będzie narzekał na linię, która faktycznie wywołuje tę metodę. – rmaddy

+0

Nie, jeśli odbiorca jest typu "id" lub używasz 'performSelector: withObject:'. W każdym razie powyższa metoda "# if" prawdopodobnie jest bardziej uporządkowana. – jbg

Powiązane problemy