Поэтому я использую указатели? - PullRequest
1 голос
/ 17 июля 2011

Я знаю, что это очень просто, но мне нужно разъяснение. Я пытаюсь разработать приложение для iPad, но у меня проблемы. Мое объяснение может быть слишком много необходимой информации, но терпите меня.

У меня есть два ViewController. Один из них называется NewGameViewController, а другой - GameViewController. В NewGameViewController я отображаю GameViewController примерно так:

GameViewController *controller = [[GameViewController alloc] initWithNibName:@"GameViewController" bundle:nil];
[self.navigationController pushViewController:controller animated:YES];

Так что это создает экземпляр GameViewController в памяти. В GameViewController есть некоторые ivars и методы, определенные в нем. Один из иваров - это массив, который заполняется объектами сидений при загрузке GameViewController (в методе viewWillAppear).

У меня также есть объект с именем player. Это просто подкласс UIView. Когда GameViewController загружается, он добавляет до шести объектов игрока в подпредставление. Мне нужно, чтобы каждый объект игрока имел доступ к одному и тому же экземпляру в памяти GameViewController, который был загружен NewGameViewController. Буду ли я использовать указатель в своих объектах игрока для доступа к одному и тому же экземпляру GameViewController? Я обнаружил, что если я загружаю новый экземпляр GameViewController в память и пытаюсь использовать его, массив ivar имеет тенденцию быть пустым и, следовательно, неиспользуемым. Как я могу быть уверен, что мой указатель на GameViewController указывает на правильный экземпляр GameViewController?

1 Ответ

1 голос
/ 17 июля 2011

Когда GameViewController загружается, он добавляет до шести объектов игрока к подпредставлению.

Итак, вот что вы можете сделать.Определите свойство в Player, которое называется содержащимViewController или gameViewController.

@property (nonatomic, retain) GameViewController *containingViewController;

Не забудьте также @synthesize containingViewController; в файле реализации (Player.m) и [containingViewController release]; в dealloc.

Затем, когда вы инициализируете игроков методом viewWillAppear, установите свойство:

player1.containingViewController = self;

Это должно решить все ваши проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...