Учитывая раздел приложения, в котором есть UINavigationController и 2 уровня UITableViews (то есть, строка выбрана на корневом контроллере, который подталкивает второй контроллер к стеку навигации) У меня есть следующие вопросы:Связь между контроллерами вида
1) Существует объект User, который требуется обоими контроллерами. Каков наилучший способ связи между двумя контроллерами? Я видел пост на этом сайте, в котором упоминается зависимости инъекции и корневой контроллер может передать объект пользователя на второй контроллер уровня по:
@implementation SecondLevelViewController
-(void) initWithUser: (User *) user {
// myUser is an instance variable
myUser = user;
[myUser retain];
}
В этом примере второй контроллер, казался бы сохранить пользователь тогда как я видел другие источники (например, курс развития iPhone в Стэнфорде), которые выступают за то, что Пользователь просто назначается и не сохраняется в этой ситуации (свободная связь).
Я также видел аргументы для формы делегирования, где назначенный объект id будет использоваться на втором контроллере (а не на сохраненной переменной экземпляра пользователя, как указано выше).
Было бы здорово, если бы кто-то мог прояснить эту позицию для меня, поскольку меня очень смущает противоречивый совет в этой области. Каков наилучший способ связи между контроллерами представлений?
2) Мой второй вопрос также касается структурирования контроллеров. Я видел примеры, когда корневой контроллер (в расположении выше) имеет массив экземпляров второго уровня контроллеров. Является ли это нормальным в профессиональном приложении или будет существенное влияние памяти на то, чтобы делать что-то таким образом (то есть без ленивой загрузки)? Я полагаю, что преимущество массива - сокращение времени загрузки для контроллеров второго уровня?
Благодарим за любые ответы, поскольку я пытаюсь правильно разработать вещи, а не взламывать их вместе.
Благодарим вас за ответы. Оле и я отмечаем ваш комментарий относительно одного сообщения на вопрос. Однако мне было просто любопытно, если подход массива (упомянутый в моем втором вопросе) имеет какие-либо преимущества при загрузке или это просто полезный способ структурирования вашего кода? – Urizen
Создание экземпляра объекта контроллера вида не должно занимать значительное количество времени, поэтому я бы сказал, что любые преимущества при загрузке несущественны. Что занимает время, это загрузка представления, но подход массива не меняет того факта, что контроллер просмотра будет лениво загружать представление в любом случае. –
Еще раз спасибо. Очень полезные ответы. – Urizen