Начало работы с какао для OS X? - PullRequest
0 голосов
/ 03 сентября 2010

Я знаком с программированием на iOS, но не знаю, куда поместить свою логику, когда я запускаю проект Cocoa для OS X. Есть ли какие-нибудь хорошие онлайн-ресурсы для перехода на OS X с iOS?

РЕДАКТИРОВАТЬ:

Спасибо за помощь. Мой главный вопрос - куда идет мой код в шаблоне по умолчанию.

Ответы [ 2 ]

2 голосов
/ 04 сентября 2010

Мой главный вопрос - куда идет мой код в шаблоне по умолчанию?

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

Итак:

Делегат объекта приложения

  • Владеет пользовательским контроллером.
  • Создает его в applicationWillFinishLaunching: (примечание: не Did; я изменяю это).
  • Отпускает его (и nil выводит переменную экземпляра) в applicationWillTerminate:.
  • Не владеет основным окном (я удаляю этот ivar и все ссылки на него).
  • Отвечает на applicationShouldTerminateAfterLastWindowClosed: с помощью YES, так что пользователь может выйти из приложения либо путем конкретного выхода, либо закрыв главное окно.
  • Может также отвечать на application:openFile: или application:openFiles:, обычно передавая файл (ы) вместе с контроллером для импорта или чего-то еще.

Перо MainMenu

  • Владеет делегатом приложения.
  • Не содержит главное окно (я удаляю пустое).

Контроллер основного окна

  • Владеет главным окном.
  • Владеет моделью, отображаемой в окне.
  • Создает начальную / пустую модель в init.
  • Загружает перо основного окна в качестве владельца в init.
  • Закрывает и отпускает окно (первое) и освобождает модель (второе) и подчиненные контроллеры (третье) в dealloc.

Перо основного окна

  • Назван аналогично контроллеру; например, «SnippetListController» для контроллера и «SnippetList» для пера.
  • Содержит главное окно.
  • В главном окне «видимый при запуске» (действительно при загрузке пера) включен и «отпущен при закрытии».

Преимущество всего этого заключается в том, что время жизни каждого объекта, кроме делегата приложения, является четким и явным, как и область ответственности. Делегат моего приложения немного больше; единственное, что он делает, а не является задачей делегата приложения, является владельцем контроллера основного окна. Аналогично, контроллер первичного окна делает только собственное главное окно и любую модель, которую я должен показать в этом окне. И в момент завершения все, кроме делегата приложения, блокируется.

Для приложений на основе документов я придерживаюсь довольно близко к шаблону. Я удаляю любые методы шаблона, которые мне не нужно настраивать, и я могу переключить один или оба метода ввода-вывода на одну из других версий (например, с readFromData:ofType:error: до readFromURL:ofType:error:), и, возможно, удалить запись метод, если я пишу только зрителю; вот и все.

1 голос
/ 03 сентября 2010

Погружение в.

Серьезно, прыгай обеими ногами. Найдите то, что вы хотите сделать, и просто сделайте это.

Из того, что вы сказали, у вас уже есть достаточный опыт работы с Objective-C и какао, и большинство вещей проникают прямо.

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