я должен создавать свои объекты вручную или с помощью InterfaceBuilder? - PullRequest
2 голосов
/ 31 января 2011

Я относительно новичок в Cocoa / Xcode и не уверен, структурирую ли я свое приложение наиболее «правильным» способом.У меня есть ряд объектов, которые активны во время работы приложения.Должен ли я создавать эти объекты вручную или с помощью Interface Builder?

Тип объектов, о которых я говорю:

  • «загрузчик», который отвечает за загрузку файлов на диск
  • средство обновления пользовательского интерфейса, которое отвечает за обновление пользовательского интерфейса для отображения результатов загруженного файла

Должен ли я создавать эти объекты в IB и устанавливать соединения между ними с помощью кода?

Ответы [ 2 ]

3 голосов
/ 31 января 2011

Это действительно вопрос личных предпочтений.

По моему мнению, IB очень хорошо разбирается в представлениях, поэтому я склонен использовать IB только для своего представления и моего контроллера представления, а все остальное я создаю в коде в viewDidLoad или в методе init контроллера контроллера.

В вашем примере подключение объекта «загрузчика» непосредственно к интерфейсу выглядит как нарушение MVC, поэтому я бы не допустил загрузчик вне моей xib.

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

Если вы создаете вещи в коде, обратите внимание, что viewDidLoad / viewDidUnload потенциально может вызываться несколько раз, так как ОС загружает и выгружает ваши представления, когда они не видны для экономии памяти. Так что помещайте туда только временные объекты ... вещи, которые должны существовать для жизни контроллера представления, должны быть созданы в методах init / dealloc. Часть того, почему мне нравится делать большую часть моего создания объектов в коде, это более тонкий уровень контроля над памятью.

0 голосов
/ 31 января 2011

Обычно я строю столько, сколько могу в IB, и затем переключаюсь на код, когда сталкиваюсь с ограничениями IB. Похоже, вы должны иметь возможность создавать интерфейс, который вы описали в конструкторе интерфейсов.

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