Существует два подхода, вообще говоря.
В первом подходе, когда вы создаете экземпляр своего следующего контроллера представления, вы можете установить свойство массива для «наследования» от текущего (который скоро станет предыдущим или родительским) контроллера представления:
MyNextViewController *_myNextViewController = [[MyNextViewController alloc] initWithNibName:@"MyNextViewController" bundle:nil];
_myNextViewController.myViewControllerArray = self.myViewControllerArray;
...
Во втором подходе вы можете создать свойство myAppDelegateArray
в своем делегате приложения, создавая экземпляр массива, когда приложение инициализируется (или создается где-то еще, по требованию).
Затем вы можете вызвать метод получения этого свойства из любого класса, включая контроллеры представления.
Например, в экземпляре MyNextViewController
у вас может быть свойство с именем myViewControllerArray
, и вы можете установить его следующим образом:
self.myViewControllerArray = [UIAppDelegate myAppDelegateArray];
Вы бы добавили оператор #define
где-нибудь в файле констант приложения, например ::
#define UIAppDelegate ((MyAppDelegate *)[UIApplication sharedApplication].delegate)
или используйте полный вызов [UIApplication sharedApplication].delegate
, если хотите.
Как правило, люди предпочитают подход с делегированием приложений, поскольку он децентрализует доступ к желаемому свойству.
При таком подходе, если вы реорганизуете свои контроллеры представления или вставляете новые контроллеры представления в иерархию VC, вам не нужно будет отлаживать дочерние свойства контроллера представления, унаследованные от родительских контроллеров представления, потому что ссылка всегда доступна из делегата приложения. .