2012-03-22 10 views
11

Ma question est: Comment définir NSIndexPath par programme.Définir NSIndexPath par programme

Par exemple ajouter la méthode:

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

Dans délégué tableView -cellForRowAtIndexPath Je veux comparer deux indexPath

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

Mais dans ce cas mon tempIndexPath = null (je pense - parce que c'est un objet autorelease)

Comment définir NSIndexPath dans ce cas?

Merci, Tous!

Répondre

16

Ajouter conserver

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

Mais vous devez être au courant de la libération temIndexPath à l'avenir.

EDIT: J'ai supprimé une mauvaise option.

+0

Création d'une propriété uniquement pour conserver un objet Je pense que c'est une surestimation du problème. De plus cela a pour effet de rendre le membre accessible de l'extérieur de la classe, ce qui peut être indésirable, d'autant plus que nous parlons d'un membre "temp" ... – Saphrosit

+0

@Saphrosit, vous avez raison. Réponse éditée – LuisEspinoza

2

Appelez simplement retain après avoir instancié:

[tempIndexPath retain]; 

Cela vous fera le propriétaire de l'objet, alors pensez à release quand vous avez fait.

1

Vous devez l'allouer et le relâcher par la suite, en le définissant de la même façon que vous avez renvoyé un objet autoreleased.

Questions connexes