2012-07-27 16 views
9

New Xcode 4.4 jest obecnie i powinna ona wspierać literały jakLiteralne @YES nie działa w iOS 5/Xcode 4.4

@42
@"String"
@23.0L
@{ @"key" : obj } i
@[obj1, obj2]

i powinno obsługuje także @YES i @NO, które nie działają podczas kierowania na najnowszy system iOS 5 (i wcześniejszy). Po kompilacji wyświetli komunikat o błędzie:

Nieoczekiwany nazwa typu „BOOL”: oczekiwano wyrażenie

Wiem, że można to naprawić wpisując @(YES) i @(NO). Ale chcę wiedzieć, dlaczego nie działa zgodnie z oczekiwaniami.

Odpowiedz

24

Powodem jest jabłko zapomniał nawiasy tutaj:

#define YES    (BOOL)1 

Problem ten zostanie rozwiązany w iOS 6 SDK:

#define YES    ((BOOL)1) 

W międzyczasie należy wpisać @(YES).

+0

Należy zauważyć, że należy to zrobić po '#import ' - jeśli umieści się te # definicje w swoim pliku Prefix.pch, powinny one wcześniej zaimportować Foundation w pch. –

9

This jest przydatna w celu uzyskania informacji o literałach.

commenter na this answer wskazuje również:

Jest jedna mała rzecz chciałbym ostrzec o. Dosłowne znaki nie są również wspierane z tego powodu . Jednak szybkie ustalenie, że wdrożony został dodanie to na początku jednej z moich wspólnych nagłówków (w projekcie iOS)

#ifndef __IPHONE_6_0 
#if __has_feature(objc_bool) 
#undef YES 
#undef NO 
#define YES __objc_yes 
#define NO __objc_no 
#endif 
#endif 

@ odpowiedź phix23s wydaje się bardziej na miejscu. Powinieneś to zaakceptować.

Było warto dodać od komentarze:

Należy zauważyć, że to musi być zrobione po #import. Jeśli ktoś stawia te #defines w ich Prefix.pch, powinni upewnić się importować Foundation wcześniej w PCH

+0

to pytanie dotyczy subskrybowania, które jest dostępne tylko w systemie iOS 6, ponieważ jest ono czymś więcej niż syntaktycznym cukrem. Liczba/bool/literały zbiorcze powinny być dostępne w poprzednich wersjach. – wattson12

+0

Hmm - interesujące - Właśnie przekonwertowałem mój projekt ios5.0 na nowe literały, a wszystkie z wyjątkiem indeksowania działają dobrze. –

+0

Tak, wygląda na to, że się myliłem. Zmienię –

Powiązane problemy