iphone - EXC_BAD_ACCESS en setCollectionViewLayout
ios exc-bad-access (1)
Si cambio el diseño de un UICollectionView durante un cambio de orientación, obtengo EXC_BAD_ACCESS
después de algunas rotaciones.
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
UICollectionViewLayout *layout = [[UICollectionViewFlowLayout alloc] init];
self.myCollectionView.collectionViewLayout = layout; // This causes EXC_BAD_ACCESS after a few rotations
}
¿Es esto un error UICollectionView
? ¿O estoy haciendo algo mal? Si es un error, ¿hay alguna forma de cambiar todo el diseño durante un cambio de orientación?
Noté que el mismo problema se menciona en esta respuesta . La depuración con NSZombies no produce información adicional.
No estoy seguro de que tenga algo que ver, pero las Notas de versión para iOS 6 dicen:
La
willRotateToInterfaceOrientation:duration:
willAnimateRotationToInterfaceOrientation:duration:
ydidRotateFromInterfaceOrientation:
ya no sedidRotateFromInterfaceOrientation:
métodos en ningún controlador de vista que realice una presentación de pantalla completa sobre sí mismo, por ejemplo,presentViewController:animated:completion:
Debe asegurarse de que sus aplicaciones no estén utilizando estos métodos para administrar el diseño de las subvistas. En su lugar, deben usar el método
viewWillLayoutSubviews
del controlador deviewWillLayoutSubviews
y ajustar el diseño utilizando el rectángulo de límites de la vista.
Como está utilizando UICollectionView
tal vez tenga algo que ver con que esté utilizando este método para cambiar su diseño.