Rendimiento de UIView: removeFromSuperview VS hide

Esta pregunta es realmente básica. ¿Cuál es la diferencia de performance entre eliminar una UIView de la jerarquía de vista y ocultar una UIView ?

He leído que las vistas que no son necesarias deben eliminarse de la jerarquía de vistas. Actualmente tengo la situación de que a veces un UIButton debe estar visible. ¿Cuándo escondo el UIButton y cuándo lo elimino de su supervisión?

¿Es costoso cambiar la jerarquía de la vista?

Si necesita alternar entre mostrar y ocultar la subvista, el mejor enfoque definitivamente lo esconde. Para un UIButton las implicaciones de memory no son tan buenas de todos modos. Y el código es más simple si simplemente cambia la propiedad hidden .

¡Además, obtienes la ventaja adicional de que la propiedad hidden es animable!

He hecho un experimento con el iPad mini6 de iOS6, con una gran vista de desplazamiento que tiene mucho contenido rico (incluyendo imágenes, sombras, capas de gradiente, imágenes de background modeladas, ya sabes, esos diseñadores :)) y encontré esa vista .hidden = SÍ ≠ [ver removeFromSuperview].

Originalmente pensé que la configuration oculta a SÍ hará que la vista no se represente / dibuje, por lo tanto, tener muchas vistas ocultas no tendrá ningún impacto en la eficiencia. Pero el resultado real es: 1) si configuro las vistas fuera de pantalla en la vista de desplazamiento grande en ocultas (y las muestro cuando vuelven a estar en el área visible), el desplazamiento no es uniforme / continuo. Cuando se desacelera naturalmente, se ve muy nervioso. 2) si elimino las vistas fuera de pantalla de la vista de desplazamiento (pero aún conservo en la memory con una matriz de seguimiento, de modo que cuando vuelvan pueden añadirse inmediatamente), el desplazamiento es obviamente más suave.