У меня проблемы с пониманием переходов и того, как они работают и передают объекты. В основном у меня есть калькулятор, и я пытаюсь построить график объектов, хранящихся в массиве. Пока у меня есть объект с именем мозг, который является экземпляром CalculatorBrain. Теперь у мозга есть свойство NSArray, которое я использую как стек для хранения переменных. Допустим, я добавляю значения 3 и 5 в массив, а затем хочу перейти. У меня есть переход, выбранный для кнопки под названием «График», поэтому, когда я нажимаю кнопку, она переходит. Как мне передать мозг новому контроллеру представления, к которому я перехожу? У меня есть свойство setGraphingPoint, которое определено в новом контроллере представления, который, я думаю, должен принимать переданный объект. Кроме того, если я передам мозг через переход, будут ли переданы значения 3 и 5 вместе с ним или он создаст новый объект CalculatorBrain? Вот что у меня есть до сих пор.
Это определено в новом контроллере представления
@property (nonatomic, strong) CalculatorBrain *graphingPoint;
@synthesize graphingPoint = _graphingPoint;
-(void) setGraphingPoint:(CalculatorBrain*) graphingPoint{
_graphingPoint = graphingPoint;
[self.graphingView setNeedsDisplay];
}
Это вызывается из старого контроллера представления, у которого будет кнопка для перехода
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"Graph"])
[segue.destinationViewController setGraphingPoint:[self.brain program]];
property. Это означает, что это ссылка на исходный передаваемый объект, а НЕ копия. Представьте, если бы я пальцем указывал на собаку. Внезапно ты подходишь ко мне. Затем я могу сказать вам, чтобы вы также использовали свой палец, чтобы указать на собаку. Мы оба имеем в виду ТОЧНО один и тот же объект (но обратите внимание, что собака на самом деле не двигается) - person Nosrettap   schedule 20.07.2012GraphPointUsing, определяющий методsetGraphingPoint. Таким образом, вам нужно импортировать только протокол, а не весь новый контроллер представления. Смотрите мой ответ ниже. - person Nosrettap   schedule 20.07.2012.h... (Это не совсем так, но для ваших целей достаточно близко к истине). - person Nosrettap   schedule 20.07.2012