Как я могу ссылаться на контроллер из созданного им объекта? - PullRequest
1 голос
/ 04 сентября 2011

Итак, у меня есть PanelController, который является NSWindowController, и он создает объект с именем FileUploader. Но внутри FileUploader я хочу иметь возможность обновить текст на панели, информируя пользователя о достигнутом прогрессе. Но я не знаю, как ссылаться на PanelController, учитывая, что я не могу создать новый экземпляр.

Должен ли я использовать ApplicationDelegate в качестве посредника, и если да, то как мне ссылаться на это? Если это так, нужно ли мне ApplicationDelegate для создания экземпляров PanelController и FileUploader, но тогда я все еще не понимаю, как ссылаться на ApplicationDelegate.

Ответы [ 2 ]

3 голосов
/ 04 сентября 2011

Также рассмотрите возможность использования блоков, что является еще одним более современным подходом Apple к обратным вызовам. Apple все больше использует его в своих новых API.

Вот конкретный SO по обновлению пользовательского интерфейса и его асинхронности:

GCD, потоки, поток программ и обновление пользовательского интерфейса

Вот еще одна статья о блоках и делегатах в качестве обратных вызовов

Как упростить логику обратного вызова с помощью блока?

3 голосов
/ 04 сентября 2011

Apple рекомендует использовать Делегаты в таких сценариях.

Вот несколько SO ответов о том, как сделать делегатов:

  1. Как создать делегатов в Obj-C
  2. Как работает делегат в Obj-C
...