Lo primero que debe hacer es vincular débilmente su aplicación al marco NewsstandKit. Esto evita que un dispositivo con una versión de iOS < 5 se bloquee debido a las bibliotecas que faltan.
Luego en tiempo de ejecución debe evitar llamar a los métodos NK y consultar las clases NK que obviamente no están disponibles en iOS < 5. En tal caso, puede usar métodos como NSClassFromString() u otras características de tiempo de ejecución obj-c que permitan detectar dinámicamente la existencia de estas características.
Una recomendación que puedo hacer en tal caso es proporcionar una directiva de precompilación que le permita aislar todas las cosas de Kiosko en el nivel de compilación. De esta forma, puede intentar compilar usando SDK 4 (si lo tiene) y ver si hay errores o advertencias en el compilador.
E.g. si se agrega en su Prefix.pch una definición como esta
#define WILL_USE_NK
entonces se puede poner entre paréntesis todas las referencias NK de esta manera:
#ifdef WILL_USE_NK
... your NK statements go here ...
#endif
Más tarde, cuando va a compilar la aplicación con SDK4 se mantiene esto definición para que tenga una compilación SDK4 real válida para dispositivos iOS4 (que puede probar) y se asegurará de que todas sus referencias NK no sean utilizadas por una aplicación iOS4. Luego debe #desdef esta definición y compilar con SDK5 (por supuesto, mantener algunos iOS 4.x como objetivo mínimo) antes de distribuir la aplicación.
Por supuesto, de esta manera no está protegido contra todos los posibles errores, pero al menos ha aislado las referencias NK.
En cuanto a la mejor estrategia sobre la lógica de negocio de la aplicación, esto depende de usted: no es una tarea fácil ya que ahora Kiosco se ocupa de muchos aspectos, como descarga de fondo, etc. Además, el modelo de la revista ahora se divide entre su modelo existente y las características de NKIssue, pero todos estos son detalles de implementación que van más allá de esta pregunta específica.
Hola Viggio, esta es una gran idea, gracias. Esto me permite mantener mi código unificado, a la vez que aislar las piezas que podrían causar problemas de compatibilidad con versiones anteriores. ¡Muchas gracias! – James