2009-07-30 8 views
12

Tengo un UITableView como mi primera pantalla con un controlador UINavigation.¿Qué es retainCount en Objective-C?

En mi primera pantalla I NSLog(@"Home Screen retain Count=%d",[self retainCount]); y registra 6 in cuando se llama a viewDidLoad.

¿Es esto correcto?

Respuesta

15

El retainCount es el número de reclamaciones de propiedad pendientes en el objeto.

Toma posesión de un objeto si lo crea utilizando un método cuyo nombre comienza por "alloc" o "nuevo" o contiene "copia" (por ejemplo, alloc, newObject o mutableCopy), o si lo envía un mensaje de retención. Todos estos incrementan la retenciónCount.

Usted renuncia a la propiedad con el uso de "liberación" o "liberación automática". Estas disminuyen la retenciónCount.

Sin embargo, nunca debes prestar atención al valor de retainCount, es confuso y, en el peor de los casos, engañoso. Simplemente siga el memory management rules: tome posesión cuando necesite mantener una referencia a un objeto y renuncie a la propiedad cuando haya terminado, y no tendrá problemas.

Si está buscando retener, va a hacer las cosas mal, y simplemente se confundirá más.

1

Suena bien. ¿Por qué estaría mal?

En general, intentar determinar las cosas a partir del conteo retenido es una mala idea. No hay reglas sobre la cantidad de veces que puede retener un objeto. La única regla es que cada retención debe equilibrarse con una liberación.

Cuestiones relacionadas