Aplicación que funciona en iOS 6 pero no funciona en iOS 5 [duplicado]

Posible duplicado:
presentViewController: bloqueo en iOS <6 (AutoLayout)
¿Cómo usar NSLayoutConstraint en iOS 6?
La aplicación no se carga

Acabo de empezar a trabajar en una aplicación en el SDK de iOS6 y funciona sin problemas en un dispositivo iOS 6 y en el simulador de iOS 6, pero no funciona en iOS 5 ni en el simulador de iOS 5. Establecí mi objetivo de implementación en: 5.0

Este es el error que me da cuando intenta abrir pero falla...

2013-01-02 14:22:57.075 MyApp[34956:c07] *** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named NSLayoutConstraint'
*** First throw call stack:
(0x14a5052 0xea5d0a 0x144da78 0x144d9e9 0x3327d7 0x3329af 0x3326b7 0x23336d 0xdae2c 0xdb3a9 0xdb5cb 0x3ba73 0x3bce2 0x3bea8 0x42d9a 0x2845 0x139d6 0x148a6 0x23743 0x241f8 0x17aa9 0x138ffa9 0x14791c5 0x13de022 0x13dc90a 0x13dbdb4 0x13dbccb 0x142a7 0x15a9b 0x257d 0x24a5)
terminate called throwing an exception(lldb) 

¿Cómo puedo arreglar esto?

preguntado el 02 de enero de 13 a las 19:01

Apple hace muchos cambios entre las versiones principales. En general, si desea que el código funcione en una versión anterior, debe apuntar principalmente a esa versión anterior y esperar que no haya demasiadas incompatibilidades en el otro sentido. (Pero como señala Brian, simplemente establecer el objetivo de implementación en la versión anterior no es suficiente; debe evitar conscientemente las instalaciones que solo se encuentran en la versión más nueva). -

2 Respuestas

Está utilizando AutoLayout, que es una función que solo está disponible en iOS6. Deberá limitar su versión de iOS a iOS6 o deberá deshabilitar AutoLayout ingresando a sus .xib o guiones gráficos y deshabilitándolo.

Respondido el 02 de enero de 13 a las 19:01

...o elimine AutoLayout de los XIB e inyéctelo solo en iOS6 dinámicamente dentro del código de su aplicación. - a

Sí, estoy de acuerdo, es una opción, pero si va a agregar dinámicamente código de diseño automático y, al mismo tiempo, realizar los mismos cálculos en código o estilo antiguo de diseño IB para admitir iOS <6, entonces es mejor que se quede con el antiguo para simplicidad y avance cuando solo tiene ios6 y superior. Aunque esa es sólo mi opinión. - rooster117

punto válido de hecho. Aún así, dado que el iPhone5 es iOS6 y superior solamente, a veces es una opción. - a

Desafortunadamente, establecer su destino de implementación en una versión anterior del sistema operativo en realidad no hace nada para evitar que use las API (o en este caso, las características de Interface Builder) que solo están disponibles en versiones posteriores.

Respondido el 02 de enero de 13 a las 19:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.