Как я могу получить доступ к данным, которые хранятся в моем делегате приложения с моих различных контроллеров представления? - PullRequest
1 голос
/ 06 июня 2010

Этот вопрос похож на этот другой пост , но я новичок в разработке для iPhone, и я привыкаю к ​​передовым методам организации моих данных в приложении. Я понимаю, что объект ApplicationDelegate является лучшим местом для управления данными, которые являются глобальными для моего приложения, правильно? Если да, как я могу получить доступ к данным, которые хранятся в моем делегате приложения с различных контроллеров представления? Например, мой массив создан в делегате приложения как таковой ...

appdelegate.m

sectionTitles = [[NSArray alloc] initWithObjects: @"Title1", @"Title2", @"Title3", nil];
rootViewController.appDelegate = self;

и мне нужен доступ к нему через различные представления моего приложения, например, мой контроллер представления корневой таблицы ...

rootviewcontroller.m

NSUInteger numTableSections = [self.appDelegate.sectionTitles count];

Это лучший способ сделать это или есть причины, по которым я должен организовать свои данные лучше? Я спрашиваю, потому что я никогда не чувствую себя слишком комфортно с использованием глобальных переменных (я виню своих профессоров в колледже), хотя я не уверен, можно ли это считать глобальной переменной.

Заранее большое спасибо за помощь!

Ответы [ 2 ]

4 голосов
/ 06 июня 2010

Я понимаю, что заявка легальна объект, чтобы быть лучшим местом для управления данные, которые являются глобальными для моего приложения, исправить?

Не совсем (у профессоров колледжа была точка). Соблазнительно начинать помещать много вещей в делегат приложения, но это не очень устойчивая практика. Смотри мой ответ здесь .

И прочитайте этот хороший пост Мэтта Галлахера для большей глубины.

Тем не менее, я часто помещаю что-то подобное в заголовок моего делегата приложения:

#define APP_DELEGATE (MyAppDelegate*) [[UIApplication sharedApplication] delegate]

так что я могу легко сделать такие вещи, как:

int n = [[APP_DELEGATE sectionTitles]count];
1 голос
/ 06 июня 2010

Это должно работать:

self.appDelegate = ( YourApplicationDelegate *) [[UIApplication sharedApplication] delegate];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...