Najprostszym sposobem, aby to zrobić jest użycie preprocesora __IPHONE_OS_VERSION_MAX_ALLOWED zdefiniowania.
Można to zrobić poprzez dodanie
__IPHONE_OS_VERSION_MAX_ALLOWED=__IPHONE_4_2
lub coś podobnego swojej opcji „Preprocessor Makra” w ustawieniach kompilacji do docelowego. Możesz przejrzeć wersje dostępne w <Availability.h>.
Niestety, jeśli dodasz ten parametr, spowoduje to niedopasowanie błędów do prekompilowanego nagłówka. Aby naprawić, musisz wyłączyć opcję "Prefiks prefiksu nagłówka" w ustawieniach kompilacji.
Po wykonaniu tej czynności otrzymasz kilka błędów dla klas, które nie istnieją w docelowym pakiecie SDK (na przykład NSOrderedSet nie istnieje w systemie iOS 4.2). Jeśli próbujesz wrócić do pre-iOS 4, prawdopodobnie dostaniesz tak dużo błędów, że kompilator poręczy - nie znam żadnego obejścia tego problemu. W każdym razie zignoruj błędy dotyczące brakujących klas w nagłówkach UIKit i przejdź na dół listy błędów; tam powinieneś znaleźć błąd za każdym razem, gdy używasz metody lub klasy, która nie jest zawarta w zestawie SDK wskazanym przez __IPHONE_OS_VERSION_MAX_ALLOWED. Upewnij się, że każda z tych metod jest dołączona do zestawu i powinieneś być bezpieczny. Należy to zrobić. Klasy, których może brakować, powinny być przetestowane również pod numerem
if ([NSOrderedSet class] != nil)
Ustawienia te nie są przypadkiem, w którym chcesz zapomnieć o odwróceniu. Aby ustawić tę opcję jako automatyczną, wykonaj następujące czynności:
- Utwórz nową konfigurację kompilacji o nazwie "Stare testy SDK".
- Definiuj __IPHONE_OS_VERSION_MAX_ALLOWED, a opcję prekompilowanych nagłówków tylko dla tej konfiguracji (naciśnij strzałkę rozwijania obok każdej linii w Ustawieniach kompilacji, aby uzyskać dostęp do poszczególnych ustawień konfiguracji).
- Powiel swój obecny Schemat i ustaw jego nazwę na "Stare sprawdzanie SDK".
- Skonfiguruj konfigurację elementu Uruchom w tym nowym schemacie do konfiguracji kompilacji utworzonej w kroku 1.
- Wybierz nowy schemat i kompilację.
Uwagi:
- robię żadnej gwarancji, że będzie to złapać dowolny/wszystkich swoich problemów.
- Wszystko poza UIKit nie zostanie przechwycone przez tę kontrolę.
- To nie jest substytut testowania kodu w wersjach systemu iOS, który planuje obsłużyć.
Myślę, że chce ostrzeżeń kompilacji dla brakujących metod, gdy na niższym iOS niż podstawowy SDK. XCode da ci tylko ostrzeżenia podczas kompilacji dla zainstalowanego aktualnego sdk, więc nie sądzę, że jest to możliwe. Jeśli musisz przetestować tylko jedno urządzenie, możesz napisać kilka przypadków testowych dla tego urządzenia i je uruchomić. – vakio
Dokładnie! Tak więc nie jest to możliwe :(. – Quentin
Możliwy duplikat [Czy istnieje sposób, aby XCode ostrzegał o nowych wywołaniach API?] (Http://stackoverflow.com/questions/4676000/is-there-a-way-for- xcode-to-warn-about-new-api-calls) – JosephH