Вам нужно две вещи:
- ссылка на
RootViewController
- средство получения вашей переменной из
RootViewController
.
В ситуации, когда у вас (наиболее вероятно) один RootViewController
на приложение, имеет смысл сохранить ссылку на этот объект в делегате вашего приложения. Вы можете получить делегат приложения следующим образом:
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
В своем классе делегата приложения вы должны добавить свойство с именем rootViewController
, которое предоставляет ваш объект RootViewController
. Теперь вы можете писать такие вещи, как
RootViewController *theRootViewController = appDelegate.rootViewController;
Это удовлетворяет первому требованию. Теперь, чтобы получить доступ к объекту, принадлежащему контроллеру представления, вам нужно добавить свойство к RootViewController
. Вы на самом деле не сказали, что это за объект или что он делает, поэтому давайте просто назовем его myMutableArray
. Создайте свойство readonly
с таким именем в RootViewController
, и теперь вы сможете писать такие вещи:
NSMutableArray *myArray = theRootViewController.myMutableArray;
Это позволит вам делать то, что вы хотите.
Я должен предупредить вас: разоблачение NSMutableArray
, как правило, не очень хорошая идея. Причина в том, что если вы измените содержимое этого массива, RootViewController
не будет знать, что вы сделали это. Таким образом, если бы вы создавали, скажем, представление основной детали, ваш RootViewController
не знал бы о добавлении нового объекта.
Было бы лучше, если бы вы написали методы, позволяющие RootViewController
модифицировать массив внутри. Например, у вас может быть метод с именем addFooObject:
, который управляет массивом. Тогда контроллер представления узнает, что вы с ним сделали. Для доступа вы можете очень легко вернуть неизменяемую, автоматически выпущенную копию изменяемого массива из вашего свойства.