Il modo più semplice per farlo è quello di utilizzare il preprocessore __IPHONE_OS_VERSION_MAX_ALLOWED definire.
A tale scopo, con l'aggiunta di
__IPHONE_OS_VERSION_MAX_ALLOWED=__IPHONE_4_2
o qualcosa di simile per l'opzione "preprocessore macro" in Impostazioni build del vostro target. È possibile cercare versioni disponibili in <Availability.h>.
Sfortunatamente se si aggiunge questa definizione causerà errori di disallineamento con l'intestazione precompilata. Quindi, per risolvere il problema è necessario disattivare l'opzione "Precompile Prefix Header" anche nelle impostazioni di compilazione.
Una volta eseguita questa operazione, si avranno un sacco di errori per le classi che non esistono nell'SDK di destinazione (ad esempio NSOrderedSet non esiste in iOS 4.2). Se stai provando a tornare indietro prima di iOS 4, probabilmente riceverai così tanti errori che il compilatore bota: non sono a conoscenza di una soluzione alternativa per questo. In ogni caso, ignorare gli errori relativi alle classi mancanti nelle intestazioni UIKit e andare in fondo all'elenco degli errori; lì dovresti trovare un errore per ogni volta che usi un metodo o una classe che non è inclusa nell'SDK a cui si riferisce __IPHONE_OS_VERSION_MAX_ALLOWED. Assicurarsi che ciascuno di questi metodi è racchiuso in un
if([targetObject respondsToSelector:@selector(thePossiblyMissingSelector:)]
e si dovrebbe essere al sicuro. Le classi che potrebbero mancare dovrebbero essere testate anche
if ([NSOrderedSet class] != nil)
Queste impostazioni non sono qualcosa che si desidera dimenticare per errore di rovesciare accidentalmente. Per rendere questa opzione automatica per il test, effettuare quanto segue:
- Creare una nuova configurazione di build chiamata qualcosa come "Vecchio test SDK".
- Definisci __IPHONE_OS_VERSION_MAX_ALLOWED e l'opzione testa precompilata solo per questa configurazione (fai clic sulla freccia di apertura accanto a ciascuna riga in Impostazioni di creazione per accedere alle impostazioni di configurazione).
- Duplica il tuo schema attuale e imposta il suo nome su qualcosa come "Old SDK Check".
- Impostare la configurazione di generazione dell'elemento Esegui in questo nuovo schema per la configurazione di generazione creata nel passaggio 1.
- Selezionare il nuovo schema e creare.
Note:
- Faccio alcuna garanzia che questo si cattura qualsiasi/tutti i vostri problemi.
- Qualsiasi cosa al di fuori di UIKit non verrà catturata da questo controllo.
- Questo non è un sostituto per testare il codice sulle versioni di iOS è piano per supportare.
fonte
2012-04-10 07:32:34
Penso che desideri avvisi in fase di compilazione per i metodi mancanti quando su un iOS inferiore rispetto al sdk di base. XCode fornirà solo avvisi in fase di compilazione per l'attuale base sdk installato, quindi non penso sia possibile. Se è solo un dispositivo che devi testare, puoi scrivere un sacco di casi di test per quel dispositivo ed eseguirli. – vakio
Esattamente! Quindi non è possibile :(. – Quentin
Possibile duplicato di [C'è un modo per XCode di avvisare sulle nuove chiamate API?] (Http://stackoverflow.com/questions/4676000/is-there-a-way-for- xcode-to-warn-about-new-api-calls) – JosephH