Проблема с глобальными переменными в том, что они размножаются. Сначала у вас есть один, затем вам нужен другой, и, прежде чем вы это знаете, у вас есть десятки глобальных переменных, вы не уверены, где переменные инициализируются и освобождаются, и каждое изменение занимает вечность, потому что вы не знаете, каковы зависимости между компонентами.
Как правило, вы хотите иметь определенного владельца для каждого ресурса в программе. В приложении Какао различные объекты контроллера и делегата обеспечивают естественную иерархию ответственности за различные части проекта.
В конкретном случае, когда у вас есть объект, который вам нужен для доступа к нескольким представлениям вашего приложения, вы обычно делаете этот объект доступным с помощью метода вашего класса контроллера представления, а затем гарантируете, что каждое представление имеет ссылку вернуться к контроллеру.
В качестве примера рассмотрим любой из примеров для UITableView. Там используется довольно сложный протокол источника данных, но другие классы UIKit имеют свойство «делегат», которое обычно инициализируется для объекта, который управляет некоторой частью их состояния.