La forma más sencilla de hacerlo es utilizar el preprocesador __IPHONE_OS_VERSION_MAX_ALLOWED definir.
Esto se hace mediante la adición de
__IPHONE_OS_VERSION_MAX_ALLOWED=__IPHONE_4_2
o algo similar a la opción de "preprocesador macros" en la configuración de generación de su objetivo. Puede buscar versiones disponibles en <Availability.h>.
Desafortunadamente, si agrega esta definición, causará errores de discrepancia con su encabezado precompilado. Por lo tanto, para solucionarlo, debe desactivar la opción "Precompilar el encabezado del prefijo" en la configuración de su compilación también.
Una vez hecho esto, obtendrá un montón de errores para las clases que no existen en su SDK específico (por ejemplo, NSOrderedSet no existe en iOS 4.2). Si intenta regresar antes de iOS 4, probablemente obtendrá tantos errores que el compilador se rescatará. No conozco una solución alternativa para esto. En cualquier caso, ignore los errores sobre clases faltantes en los encabezados de UIKit, y vaya al final de la lista de errores; allí debería encontrar un error cada vez que utiliza un método o clase que no está incluido en el SDK al que señala __IPHONE_OS_VERSION_MAX_ALLOWED. Asegúrese de que cada uno de estos métodos esté encerrado en un
if([targetObject respondsToSelector:@selector(thePossiblyMissingSelector:)]
y debe estar seguro. Las clases que pueden faltar deben ser probados
if ([NSOrderedSet class] != nil)
Estos ajustes no son algo que se quiere olvidar accidentalmente a voltear hacia atrás sin embargo. Para que esto sea una opción automática para probar, haga lo siguiente:
- Cree una nueva configuración de construcción llamada algo así como "Old SDK Testing".
- Defina __IPHONE_OS_VERSION_MAX_ALLOWED y la opción de encabezado precompilado solo para esta configuración (presione la flecha de divulgación junto a cada línea en Configuración de compilación para acceder por configuración).
- Duplicar su esquema actual y establecer su nombre a algo así como "Old SDK Check".
- Establezca la configuración de compilación del elemento Ejecutar en este nuevo esquema a la configuración de compilación que creó en el paso 1.
- Seleccione el nuevo Esquema y compilación.
Notas:
- No hago ninguna garantía de que esto captura de cualquier/todos sus problemas.
- Cualquier cosa que no pertenezca a UIKit no se verá afectada por este control.
- Esto no es un sustituto para probar su código en las versiones de iOS que planifican para admitir.
Creo que quiere advertencias en tiempo de compilación para los métodos que faltan cuando está en un iOS más bajo que el sdk base. XCode solo te dará advertencias en tiempo de compilación para la base de datos sdk actual instalada, por lo que no creo que sea posible. Si solo necesita probar un dispositivo, puede escribir un montón de casos de prueba para ese dispositivo y ejecutarlos. – vakio
¡Exactamente! Por lo tanto, no es posible :(. – Quentin
Posible duplicado de [¿Hay alguna manera de que XCode advierta sobre nuevas llamadas a la API?] (Http://stackoverflow.com/questions/4676000/is-there-a-way-for- xcode-to-warn-about-new-api-calls) – JosephH