NSMutablearray установлен в (нуль)? - PullRequest
0 голосов
/ 25 июня 2011

Так что у меня есть два контроллера представления в FirstViewController и SecondViewController

в FirstViewController

 NSMutableArray *array;

создать для него свойство и синтезировать

в SecondViewController

NSMutableArray * arraySecond;

создать свойство и синтезировать его затем я пытаюсь сделать что-то вроде этого (после того, как для arraySecond установлено что-то вроде a b c d)

FirstViewController *FV = [[FirstViewController alloc]init];
FV.array = arraySecond;
[FV release];

Я пытаюсь это сделать, но когда я пытаюсь распечатать массив из firstviewcontroller, он устанавливается в (ноль), почему он это делает и что я могу сделать, чтобы это исправить?

Ответы [ 2 ]

1 голос
/ 25 июня 2011
FirstViewController *FV = [[FirstViewController alloc]init];

secondViewController *SV = [[secondViewController alloc]init];

//here create secondArray

[FV SetArray:SV.arraySecond];

Если вы синтезировали arraySecond, тогда [self.arraySecond release];

0 голосов
/ 25 июня 2011

Вы создаете экземпляр FirstViewController, устанавливаете значение array и затем освобождаете тот экземпляр, который освобождает объект. Таким образом, все усилия потрачены впустую. Так как это в SecondViewController, я предполагаю, что к этому времени уже существует FirstViewController, поэтому вы не должны устанавливать array нового экземпляра FirstViewController, а пытаться передать его существующему экземпляру. Поскольку у вас уже есть свойство, объявленное для совместного использования между контроллерами представления, мы будем использовать его.

Делайте это при создании экземпляра SecondViewController в FirstViewController,

SecondViewController * viewController = [[SecondViewController alloc] init];

self.array = [NSMutableArray array];
viewController.arraySecond = self.array;

[self.navigationController pushViewController:viewController animated:YES];
[viewController release];

Теперь массив распределяется между контроллерами представления. Не инициализируйте свойство arraySecond где-либо еще, чтобы они оба указывали на один и тот же объект, а внесенные вами изменения в arraySecond были видимы для экземпляра FirstViewController. Вернувшись к экземпляру FirstViewController, откройте добавленные вами значения, используя свойство array.

Альтернативами совместному использованию объектов являются механизм делегирования и уведомления. Вы можете посмотреть на них тоже. Пока это должно работать.

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