Переход с iOS на OSX
Я хочу начать обучение программированию для OSX, но запрограммирован только для iOS.
Каковы существенные различия на уровне программирования, помимо аппаратных проблем, таких как память, вычислительная мощность и т.д.
С точки зрения фактического api и программирования, такие же элементы, которые будут использоваться мышью и клавиатурой, а не сенсорным экраном.
Мне бы хотелось получить советы от людей, которые имеют опыт работы с этим и, возможно, с хорошими ссылками на книги или учебными ссылками, чтобы начать работу.
Спасибо
Ответы
Ответ 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. НТН