iphone iphone-sdk-3.0

¿Cómo puede utilizar las características de iPhone OS 3.0 en una aplicación compatible con 2.0?



iphone-sdk-3.0 (5)

Apple tiene un ejemplo de cómo hacer esto, específicamente crear una aplicación compatible con 2.x que use MFMailComposeViewController ....

http://developer.apple.com/iphone/library/samplecode/MailComposer/index.html

la respuesta implica compilar con el SDK 3.0, establecer el destino de despliegue en 2.x, garantizar que los marcos 3.0 estén marcados como referencias "débiles" y luego hacer lo correcto para que el código funcione si se encuentra en un dispositivo donde los nuevos marcos no están presentes.

Me gustaría utilizar algunas características de iPhone OS 3.0 en mi aplicación 2.0 cuando se ejecuta en un dispositivo 3.0. No quiero ir 3.0 en todo el camino porque hay clientes que todavía no quieren actualizar.

Experimenté un poco con la vinculación débil de MapKit.framework (-weak_framework MapKit). Lo encontré bastante engorroso, ya que tuve que engañar al compilador / enlazador para usar el SDK 2.0 con todos los códigos excepto el que usa MapKit.

¿Alguien tiene más experiencia con esto? ¿Qué estás haciendo para hacer que compile / enlace? ¿Alguien ya envió una aplicación a Apple, que debilita los marcos de otras versiones del sistema operativo?


Gran howto en Weak Linking (tanto Bibliotecas como Frameworks) aquí:

http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html#//apple_ref/doc/uid/20002378-107262

Aunque está un poco desactualizado ... con el último código x, el proceso para vincular débilmente un marco completo es realmente más fácil:

  1. Haga clic derecho en el objetivo y seleccione Obtener información
  2. Ve a la pestaña "General"
  3. En la sección de bibliotecas enlazadas hacia la parte inferior, cambie el tipo de obligatorio a débil para todas las bibliotecas que desee vincular débilmente.
  4. Lucro

No creo que puedas. 3.0 y 2.x usan SDK completamente diferentes y se vinculan a un conjunto completamente diferente de archivos y bibliotecas. No estoy seguro, pero no creo que pueda enlazar al SDK 3.0 y aún así ser compatible con 2.X.

(por favor agregue un comentario si estoy equivocado).


Probablemente esta no sea la respuesta que estás buscando, pero el método que uso es solo tener dos aplicaciones separadas. En lugar de actualizar mis aplicaciones existentes con actualizaciones de 3.0, solo lanzo esto como una nueva aplicación. Los usuarios antiguos pueden usar la aplicación 2.0 durante el tiempo que quieran, y las personas que quieran las características 3.0 pueden actualizarse.


Siempre puede vincular a marcos que no son parte del SDK actual utilizando la función dlopen. Por supuesto, esto no se recomienda para marcos que no son públicos (no recomendado == prohibido en la tienda de aplicaciones, en este caso). Sin embargo, a medida que se hacen públicos los nuevos marcos en versiones inéditas del sistema operativo, es una opción. Simplemente verifique su número de versión y abra los marcos disponibles. Útil para funciones individuales, no tanto si estás haciendo un uso intensivo de cosas nuevas.