Je viens de tester après le changement, cela fonctionne, mais isse apparaît à l'étape suivante si j'essaie d'utiliser cette variable plus tard, elle est perdue.
j'ai changé les noms des objets pour faciliter l'analyse:
//my method in my object OBJ2
{
[delegate didSelectItemAtIndex:[self methodreturningnumber]];
}
dans mon délégué (OBJ1) J'ai méthode:
-(void)didSelectItemAtIndex:(NSNumber *) NSNUMBER
{
SliceDetailsViewController * OBJ2 = [[SliceDetailsViewController alloc] initWithNibName:nil bundle:nil];
OBJ2. NSNUMBER = NSNUMBER; // <---------- THIS IS LOST IF I DON'T ADD RETAIN [NSNUMBER retain]
OBJ2.pieChart = graphView;
OBJ2.myColors=myColors;
[self presentModalViewController:sliceDetailsController animated:YES];
[sliceDetailsController release];
}
dans ma fenêtre modale (OBJ3) J'ai méthode qui est appelée à partir de il est sous-vue OBJ4
- (void)colorPicker:(ColorPicker *)myColorPicker didSelectItemAtIndex:(NSNumber *)indexPath
{
[OBJ2 setColor:NSNUMBER value:indexPath]; // <------ SLICEID IS NOT AVAILABLE HERE IF NOT RETAINED IN PREVIOUS OBJECT
}
OBJ4 appelle cette méthode ci-dessus:
[delegate colorPicker:self didSelectItemAtIndex:atrribute];
........... méthodes appelées à partir d'objets sont: OBJ1 -> OBJ2 -> OBJ1 -> OBJ3 -> OBJ4 -> OBJ3
OBJ1 appel OBJ2 (en passant soi comme délégué) OBJ2 génère NSNumber X et un procédé d'appel de OBJ1 avec NSNumber X
OBJ1 appel comme presentModalViewController OBJ3 et définit X comme l'un des attributs de OBJ3
OBJ3 est affiché correctement et peut accéder NSNumberX
OBJ3 VievController classe sous-vue OBJ4 (vue sur la même écran)
lorsque je clique sur OBJ4 il appelle la méthode de OBJ3 sans arguments et OBJ3 a l'adresse de NSNumber, mais il est hors de portée.
..........
J'ai changé cela, mais comment conserver cet objet plus tard? J'ai décrit le problème ci-dessous. – plusz