2012-03-22 20 views
11

Mi pregunta es: Cómo establecer NSIndexPath programmatically.Establezca NSIndexPath programmatically

Por ejemplo agrego método:

- (void)setDefaultValue{ 
tempIndexPath = [NSIndexPath indexPathForRow:0 inSection:1]; 
} 

En tableView delegado -cellForRowAtIndexPath quiero comparar dos indexPath

si ([indexPath IsEqual: tempIndexPath]) ...

Pero en este caso mi tempIndexPath = null (creo - porque este es el objeto de liberación automática)

¿Cómo establecer NSIndexPath en este caso?

¡Gracias, todos!

Respuesta

16

Agregar retener

- (void)setDefaultValue{ 
    tempIndexPath = [[NSIndexPath indexPathForRow:0 inSection:1] retain]; 
} 

Pero hay que ser conscientes de temIndexPath liberación en el futuro.

EDITAR: Borré la opción incorrecta.

+0

Creando una propiedad solo para retener un objeto Creo que es una sobreestimación del problema. Además, esto tiene el efecto (lateral) de hacer que el miembro sea accesible desde fuera de la clase, lo que puede ser indeseable, especialmente considerando que estamos hablando de un miembro "temporal" ... – Saphrosit

+0

@Saphrosit, tienes razón. Respuesta editada – LuisEspinoza

2

Simplemente llame retain después de que haya instanciado:

[tempIndexPath retain]; 

Esto hará que el propietario del objeto, a fin de recordar a release que cuando lo haya hecho.

1

Tiene que asignarlo y soltarlo después, definiéndolo de la manera que lo hizo es devolver un objeto liberado automáticamente.