Подтвердить что ты не робот

Переход с iOS на OSX

Я хочу начать обучение программированию для OSX, но запрограммирован только для iOS.

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

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

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

Спасибо

4b9b3361

Ответ 1

Позвольте мне сказать так: не просто пытайтесь перенести все свои вещи на Mac, не думая о принципах дизайна. Многие разработчики стремятся попасть на платформу Mac разработчиков, не вкладывая времени в свои приложения. Простое перемещение приложений с iOS на Mac не создает хороших интерфейсов.

Лицо, iOS построено для сенсорного экрана, а Mac - нет. Таким образом, просто перенос вашего интерфейса может работать, но он плохой и нахмурился многими пользователями. Я бы просто загрузил некоторые известные приложения Mac (демонстрации работают нормально) и просто изучите, как интерфейс выложен по сравнению с iOS. Существуют аналогичные концепции, но есть больше различий, чем сходства.

Самое принципиальное отличие состоит в том, что интерфейс на iPhone может иметь только одно окно, в то время как Mac может иметь неограниченные окна (теоретически). Наложение всех ваших взглядов в одно окно просто не разрезало его на Mac. Пользователи ожидают нескольких окон, и, честно говоря, это намного лучший способ сделать это.

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

Платформы так похожи, но все же разные.:)

enter image description here

Ответ 2

При написании современного приложения OS X вы обычно будете использовать привязку данных, чтобы подключить вашу модель (модели) к вашим представлениям, через общие контроллеры, такие как NSArrayController.

Обертывание одной головы вокруг Cocoa Связывание данных - сложная задача для новичков, сначала очень расстраивающая, а затем очень захватывающая. Если ваше основное связывание данных может существенно изменить способ проектирования вашего программного обеспечения.

Проблема в том, что ни одно из ваших приложений для iOS не было разработано с учетом привязки данных, и что вам придется пересечь мост, чтобы быть счастливым и эффективным разработчиком OS X (наряду с изучением различных различий в SDK)

Ответ 3

Я пошел другим путем 2 года назад и неожиданно перестал двигаться.

OS X намного старше и была создана до Objective-C 2.0, поэтому в устаревших классах AppKit/CoreFoundation не так много свойств. Большая часть моего старого кода iOS выглядит так:

[[self navigationController] popViewControllerAnimated: YES];

Пользовательский интерфейс: большая часть иерархии resoponder/view/control аналогична, но теперь называется NS (от латинского для NextStep), а скорее UI (латинский для небольшого экрана).

Элементы управления

немного отличается, вы подключаете действие к элементу управления, и элемент управления решает, когда отправить сообщение о действии, т.е. если полоса прокрутки настроена на непрерывную отправку сообщения или нет. который немного отличается от того, как это делает UIkit, где вы подключаетесь к типу события: значение изменено, коснуться внутри и т.д.

Вы получаете более одного окна в OS X, что дает вам новые возможности и проблемы. Вы должны больше беспокоиться об иерархии ответчиков.

Маленькие вещи всегда получат вас, как в UIBezierCurve, методы называются так немного иначе, как NSBezierCurve, addLineToPoint:, а не lineToPoint:

Обратите внимание на предупреждения своего компилятора и возьмите новую книгу, и все будет в порядке.

Ответ 4

На протяжении многих лет эти 2 платформы стали намного более похожими, и многие API OS X были перенесены в iOS. Основное различие, на которое я думаю, это части пользовательского интерфейса. В OS X вы используете AppKit для представления своего пользовательского интерфейса вместо UIKit. (Хотя вы можете использовать Interface Builder для обоих).

Некоторые API-интерфейсы совершили обратную поездку: CoreLocation использовался только для iOS-инфраструктуры и теперь доступен для OS X.

Другие изменения:

  • Модели событий различны (NSEvent vs UIEvent).
  • CoreImage доступен os OS X

В зависимости от вашего уровня опыта, я бы начал с некоторых примеров AppKit, предоставленных Apple, в Xcode. НТН