Tengo una aplicación en la tienda de aplicaciones con casi 5 estrellas, pero cuando salió iOS 6, algunas de las vistas en la jerarquía de vista principal de la aplicación comenzaron a parpadear. Esto sucede en la aplicación que estaba en la tienda (la eliminé cuando salió iOS6), así como en el simulador.iOS 6 ver jerarquía pesadilla
He pasado aproximadamente 14 horas, probando 100 cosas, para depurar esto en Xcode, pero no puedo obtener ninguna tracción sobre él. Las subvistas desaparecen y reaparecen como si hubiera un gremlin configurando aleatoriamente la propiedad visible para cada una de ellas hasta 10 veces por segundo, entre periodos más largos donde todo es normal.
La interfaz principal es una esfera que el usuario puede rotar, donde utilizo transformaciones 3d en una capa para girarla. El único patrón que he encontrado es que 3 de las 4 subvistas que desaparecen se desvanecen juntas, como si estuvieran bloqueadas como una sola, cuando se gira el dial a ciertas posiciones discretas.
La 4ta subvista desaparece debe ser una imagen estática y está parpadeando intermitentemente sin un patrón discernible.
Me encantaría cualquier idea, consejos sobre cómo puedo solucionar esto. No es una advertencia de memoria, y la ejecución de [setNeedsToDisplay] adicional parece no tener ningún efecto. Estoy empezando a pensar que Apple rompió algo en iOS6, pero no puedo encontrar a nadie más hablando de estos problemas.
Aquí es un desglose de jerarquía de subvistas y CALayers de la vista principal:
- Mi jerarquía contiene 2 CALayers base que son bien.
- Encima de eso hay un UIView personalizado muy grande (usa drawRect) y un UIImageVIew grande que parpadean juntos, siempre, cuando el inferior se gira en ciertas posiciones. Solo el inferior está siendo rotado .
- Encima de eso hay un dibujo de texto personalizado UIView que no parpadea.
- Encima de eso hay un pequeño pin rojo gráfico UIImageView que parpadea en al mismo tiempo que las 2 vistas anteriores. Este es un vainilla UIImageView; ¡sin transformaciones o subclase o código de dibujo personalizado! Y pero todavía tiene el mismo parpadeo.
- Por encima de eso es un UIButton invisible que parece funcionar todo el tiempo.
- Por encima de que es un UIImageView que es un pequeño gráfico que deje de parpadear y constantemente, sin relación con el parpadeo basado en la rotación de los otros capas 3 "vinculados" (digo vinculado porque les gusta a desaparecer todos juntos) .
¿Intentó agregar algunos mensajes de registro al reemplazar a los programadores de 'isHidden',' alpha' y los métodos de capas al cambiar el orden? Apple hizo algunos cambios en UIKit, eso es cierto, pero aún no significa que usted no sea el responsable del problema. Como si tuvieran una advertencia en 'UITouch.h' diciendo' Las variables de instancia de cualquier clase de UIKit deben considerarse privadas ... 'y adivinen qué, los vars ya no son públicos en iOs6. –
Hice lo que sugirió y agregué modificaciones para setHidden: y setAlpha: en mi subclase UIView que tenía problemas y establecí un punto de interrupción para cada uno: nunca recibieron un golpe. Sin embargo, no estoy seguro de lo que quiere decir con los cambios de UIKit. – avance