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