Я обычно использую свой appcontroller в качестве посредника для вещей, которые мне нужны доступны во всех моих классах… при условии, что ваш appcontroller также является делегатом вашего приложения. Из любого класса я могу попасть в свой appcontroller (делегат приложения), используя [NSApp делегат].
Имея это в виду, я проверяю, что мой appcontroller создает такие вещи, как оконные контроллеры. Затем, если мне нужно получить доступ к контроллеру окна, я создаю переменную экземпляра для него в моем appcontroller, а затем создаю метод доступа для этой переменной экземпляра. Например:
в appcontroller.h:
MyWindowController *windowController;
@property (readonly) MyWindowController *windowController;
в appcontroller.m:
@synthesize windowController;
Тогда из любого класса я могу добраться до этого экземпляра контроллера окна, используя:
MyWindowController *windowController = [[NSApp delegate] windowController];