Cambiar la vista después de addSubview, ¿qué es una buena práctica?

Esto puede sonar una pregunta de novato, pero soy nuevo en iOS. Supongamos que tienen este código.

UILabel* label = [[UILabel alloc] init]; ... [someScrollView addSubview:label]; ... label.text = @"Some Text"; 

¿Es una buena práctica modificar la vista después de addSubview? En realidad, mi preocupación es seguir probablemente, es posible que la label se label.text antes de llegar a la asignación de label.text , por ejemplo, en viewDidUnload , ¿verdad? y la asignación fallará.

En general mis preguntas son

  • ¿Es una buena práctica modificar vistas después de addSubview?
  • ¿es una buena práctica lanzar la vista después de addSubview y más adelante si necesito get una subvista para searchla usando la siguiente técnica for (UIView *view in self.subviews) { if (...) ... } ?

Su código está bien, siempre y cuando esté todo en el mismo método y la label no se reasigne durante ninguna de las … secciones.

La modificación de una vista antes o después de agregarla a una subvista no hace ninguna diferencia.

Si ha asignado una vista, luego la agregó a una subvista y no desea mantener una reference por separado, debería liberarla; esta es la gestión de memory estándar. La súper vista conservará sus subvenciones.

Para get una reference a su subvista nuevamente, sus dos opciones son:

  • Establezca la label en la subview antes de agregarla, luego use viewWithTag: para getla más tarde
  • Mantenga una reference a la subvista como una variable de instancia (en este caso, no la liberarías después de crearla, sino que la liberarías en desocupado).
  1. Está bien cambiar las properties de una vista después de agregarla como una subvista. Esas properties se aplicarán (o se animarán) en el siguiente turno del runloop cuando UIKit procese cosas.

  2. Debes liberar tu vista completamente después de agregarla como una subvista SI ya no necesitas poseerla. En otras palabras, siga las pautas de administración de memory para toda la progtwigción de cocoa. Hacer addSubview hará que la vista correspondiente la retenga (ya que la necesita). Sin embargo, si necesita cambiar una propiedad en la vista, debe conservarla para que tenga acceso a ella

  • He usado ambas forms: modificando antes y después y no he tenido ningún problema de ninguna manera. La supervisión supervisa la subvista, por lo que si no liberas la supervisión o si configuras la subvista a NIL en alguna parte, estás bastante seguro.

  • Sí, debe liberar la vista que agregó después de addSubview, pero es más fácil hacerlo así:

UILabel* label = [[[UILabel alloc] init] autorelease];

Luego, se lanzará automáticamente y no tendrá que preocuparse de liberarlo explícitamente.