Я только что проверил после изменения, он работает, но isse появляется на следующем шаге
если я попытаюсь использовать эту переменную позже, она будет потеряна.
Я изменил имена объектов, чтобы облегчить анализ:
//my method in my object OBJ2
{
[delegate didSelectItemAtIndex:[self methodreturningnumber]];
}
в моем делегате (OBJ1) у меня есть метод:
-(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];
}
в моем modalWindow (OBJ3) у меня есть метод, который вызывается из его подпредставления 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 вызывает этот метод выше:
[delegate colorPicker:self didSelectItemAtIndex:atrribute];
...........
вызываемые методы из объектов:
OBJ1 -> OBJ2 -> OBJ1 -> OBJ3 -> OBJ4 -> OBJ3
OBJ1 вызов OBJ2 (передача себя в качестве делегата)
OBJ2 генерирует NSNumber X и вызывает метод OBJ1 с NSNumber X
OBJ1 вызывается как presentModalViewController OBJ3 и устанавливает X как один из атрибутов OBJ3
OBJ3 отображается правильно и имеет доступ к NSNumberX
OBJ3 Подвиг класса VievController OBJ4 (представление отображается на том же экране)
когда я нажимаю на OBJ4, он вызывает метод OBJ3 без аргументов
и OBJ3 имеет адрес NSNumber, но он выходит за рамки.
..........