Crash NSLayoutConstraint (iOS 6)

Cuando nos toca actualizar cualquier SDK los valores añadidos de dicha actualización, muchas veces  generan problemas con programas realizados con el SDK anterior, bien sea porque hay líneas “Deprecated” u obsoletas, o porque hay que añadir alguna otra línea, funcionalidad, etc del API (los que usan Java viven esta tortura constantemente :p)

Así me ocurrió con la actualización de XCODE de 4.2 a 4.5 y que ahora usa iOS 6. Y aunque este post lo debí escribir hace mucho tiempo (2012 ya se fue) pues nunca es tarde para mencionar lo ocurrido.

Algunas nuevas funcionalidades de XCODE con iOS 6 es la utilización de Storyboards, es automático de hecho, y debería ser así. Sin embargo ya estaba a medio camino del proyecto cuando tuve que actualizar y no me di cuenta que las nuevas XIB que estaba creando me colocaban un “Check” en una opción que jamás había tocado antes. El AutoLayout.

¿Qué ocurre con esto? pensarás. Pues sencillo, cuando ejecutas tu programa en iOS 6 va de maravilla, puesto que ese AutoLayout es precisamente para iOS 6 y sus StoryBoards, si no usas StoryBoard no pasa nada. El problema aparece cuando bajas del iOS 6 al iOS 5 o 5.1 que NO es una funcionalidad de este sistema operativo y por lo tanto se cae al tratar de ejecutar el XIB con el AutoLayout marcado con el check y aparece el error de abajo:

*** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named NSLayoutConstraint'

La solución es sencilla: busca todos los XIB y desmarca la opción AUTOLAYOUT. ¡Presto!

 

Sofia Swidarowicz

I'm an iOS Software Engineer mostly. Known as phynet in the internez. I'm me, full of memory failure and lovely karma.

 

Leave a Reply

Your email address will not be published. Required fields are marked *