2012-03-22 16 views
11

La mia domanda è: Come impostare NSIndexPath a livello di programmazione.Imposta NSIndexPath al livello di programmazione

Per esempio aggiungo metodo:

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

In tableView delegato -cellForRowAtIndexPath voglio mettere a confronto due indexPath

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

Ma in questo caso il mio tempIndexPath = null (penso - perché questo è oggetto autorelease)

Come impostare NSIndexPath in questo caso?

Grazie, tutto!

risposta

16

Add mantenere

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

Ma bisogna essere consapevoli di temIndexPath rilascio in futuro.

MODIFICA: Ho eliminato l'opzione non valida.

+0

Creazione di una proprietà solo per conservare un oggetto Penso che sia una sopravvalutazione del problema. Inoltre questo ha l'effetto (di lato) di rendere il membro accessibile dall'esterno della classe, il che può essere indesiderabile, specialmente considerando che stiamo parlando di un membro "temp" ... – Saphrosit

+0

@Saphrosit, hai ragione. Risposta modificata – LuisEspinoza

2

Basta chiamare retain dopo aver istanziato è:

[tempIndexPath retain]; 

Questo vi farà il proprietario dell'oggetto, quindi ricordatevi di release quando avete fatto.

1

Devi allocarlo e rilasciarlo in seguito, definendolo nel modo in cui hai fatto è stato restituito un oggetto autoreleased.

Problemi correlati