iOS: addConstraints: aplicación fallida

Problema

No puedo adoptar Auto Layout en mi proyecto actual.

Detalles

Estaba teniendo el mismo problema antes que esta pregunta presentViewController: crash on iOS <6 (AutoLayout), pero ninguna de las respuestas proporcionadas fue una solución para mí: estoy usando todas las vistas de storyboard sin xibs. Mi configuration 'Usar layout automático' ya está desactivada y no utilizo nada más que iOS 6.

El controller de mi vista inicialmente se bloqueaba, así que establezco las restricciones que se agregarán con un retraso y ahora mi aplicación se bloquea durante cualquier addConstraints: llamada. Lo peor es que no me dice por qué.

Código

Vincularé mi código, pero es bastante sencillo.

 -(void)addAllConstraints { NSDictionary * views = NSDictionaryOfVariableBindings(_memoryImage, _peopleView, _contentHolder, _commentsTableView); NSArray * constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[_memoryImage]-50-[_peopleView]-0-[_contentHolder]-0-[_commentsTableView]" options:0 metrics:nil views:views]; NSLog(@"Views %@, Constraints %@", views, constraints); [_peopleView addConstraints:constraints]; [_memoryImage addConstraints:constraints]; [_contentHolder addConstraints:constraints]; [_commentsTableView addConstraints:constraints]; } 

La aplicación se cuelga en la llamada de _peopleView a addConstraints. Tanto las vistas como las NSLayoutConstraints se crean con éxito.

¿Algunas ideas? Gracias, felices fiestas.

EDITAR:

Agregar loggings de Crash para mostrar que no se muestra nada útil:

 2012-12-25 10:40:13.936 -----[4955:907] Views { "_commentsTableView" = "<UITableView: 0x1eb6be00; frame = (0 372; 320 100); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x1e51ce00>; layer = <CALayer: 0x1e51cee0>; contentOffset: {0, 0}>"; "_contentHolder" = "<UIView: 0x1e5c6590; frame = (0 270; 320 112); layer = <CALayer: 0x1e5c27f0>>"; "_memoryImage" = "<UIButton: 0x1e5c4aa0; frame = (0 0; 320 280); opaque = NO; layer = <CALayer: 0x1e5c4b60>>"; "_peopleView" = "<UIView: 0x1f0ceea0; frame = (0 230; 320 50); layer = <CALayer: 0x1f0cf790>>"; Constraints ( "NSLayoutConstraint:0x1e51a880 V:[UIButton:0x1e5c4aa0]-(50)-[UIView:0x1f0ceea0]", "NSLayoutConstraint:0x1e5ba4e0 V:[UIView:0x1f0ceea0]-(0)-[UIView:0x1e5c6590]", "NSLayoutConstraint:0x1e51b860 V:[UIView:0x1e5c6590]-(0)-[UITableView:0x1eb6be00]" ) } (lldb) 

Se supone que las restricciones se agregan a la vista que es la vista de supervisión de las subvistas. Entonces, si estos objects están en tu vista principal, entonces deberías tener (y ninguna de las otras líneas addConstraints:):

 [self.view addConstraints:constraints]; 

Además, su dictionary, puntos de vista, debe ser nulo (no sé si esto es necesario o no. He notado en un ejemplo de Apple que no lo hicieron, pero la definición de function lo muestra con el cero) .