Лучшая практика делегирования приложений - PullRequest
2 голосов
/ 05 мая 2009

Я делал несколько приложений здесь и там, и я знаю, как это сделать. Что меня всегда смущало, так это доступ к глобальным атрибутам и место, где их лучше всего устанавливать. У меня есть несколько вопросов о том, как получить доступ к вещам и как получить к ним доступ.

Нужно ли включать заголовочный файл делегатов приложения в любой другой файл, к которому вы хотите получить доступ? Скажем, у меня есть контроллер представления, который я хотел бы использовать. Нужно ли включать .h в .h моего контроллера представления? Или я могу установить:

@class AppDelegate;

Вы можете получить доступ только к делегату, набрав:

[UIApplication sharedApplication].delegate

КАЖДЫЙ и каждый раз? Это то, что я просто должен привыкнуть? Или я мог бы установить следующее в моей реализации в каждом .h:

AppDelegate *delegate;

А внутри функции init поместить экземпляр singleton в эту переменную?

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

Ответы [ 2 ]

5 голосов
/ 05 мая 2009

Может быть, вам нужно пересмотреть, как вы используете App Delegate? Для меня это звучит так, как будто вы делаете не очень хороший дизайн класса.

Независимо от того, вот способ сделать это легко. Не помещайте это в init, просто используйте его, когда вам это нужно.

MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];

Естественно, замените MyAppDelegate фактическим именем класса вашего делегата приложения.

0 голосов
/ 06 мая 2009

Другая возможность - добавить код для использования правильно приведенной ссылки делегата приложения в виде #define в заголовочном файле делегата приложения, поэтому после его включения вы можете сделать что-то вроде:

MYAPPDELEGATE.customProperty = blah;

Однако я склоняюсь к тому, чтобы просто написать строку, представленную Джоном, так как использование #defines сбивает с толку завершение кода, что мне кажется более раздражающим, чем просто ввод строки.

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

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