перенос приложения из углерода в какао - PullRequest
4 голосов
/ 13 октября 2010

Я работаю над приложением, в котором мне нужно перенести весь его код с углерода на какао. У меня есть опыт программирования на C, C ++, python и Java во время учебы и стажировки, но я никогда не касался цели C или до этого занимался программированием для Mac (Carbon и Cocoa).

Итак, не могли бы вы предложить мне несколько источников для начала, а также как мне провести всю миграцию?

После исследования в сети я обнаружил, что большинство людей предложили следующие книги

Программирование какао для Mac® OS X, третье издание Аарона Хиллегаса

Программирование в Цели C - Стивен Кочан

У меня есть обе эти книги.

Должен ли я сначала прочитать их, а затем начать с изменения кода? (это займет некоторое время, чтобы прочитать оба из них)

OR

после приличного сходства с Obj C и Cocoa, должен ли я сразу приступить к миграции кода?

Кроме того,

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

Ответы [ 2 ]

10 голосов
/ 13 октября 2010

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

Установите набор документации Legacy в Xcode, чтобы получить доступ к руководствам Carbon.Вам нужно прочитать Обзор углерода , затем Начало работы с углеродом , а затем все, на что ссылается Начало работы.Вам также нужно будет изучить базовую основу, которую используют некоторые из самых современных частей Carbon;прочитайте Базовые базовые концепции проектирования и Руководство по программированию управления памятью для Core Foundation .

Затем изучите Какао.

Я не выучилКнига Hillegass, но многие люди клянутся этим.Моя текущая любимая книга о какао - «Какао и Objective-C: Up and Running» Скотта Стивенсона .Как я узнал, Какао использовал собственные документы Apple.Начните с Язык программирования Objective-C , Руководство по основам какао и Руководство по программированию управления памятью для какао .Большая часть последнего документа покажется вам действительно знакомой, но ничего не пропустит.Прочитайте каждое из этих руководств от начала до конца и до конца.

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

В будущем вам также потребуется совместить приложение с 64-битным режимом.Если на тот момент у вас все еще есть какой-либо код углерода, вам нужно прочитать 64-битное Руководство для разработчиков углерода ;в любом случае вам также понадобится общее 64-битное руководство по переходу и 64-битное руководство по переходу для какао .

0 голосов
/ 14 августа 2011

Я сам сейчас работаю над этим процессом, и это довольно сложное мероприятие для полноценного основанного на документе приложения, использующего несколько платформ. В приложении My Carbon есть десятки пунктов меню, интерфейс построен с использованием Carbon Nibs и реализован с использованием обработчиков событий Carbon. Язык программирования - C ++. Возвращаясь к истории, оригинальная классическая версия для Mac была реализована на прямом C, так что есть и немного наследства той эпохи. PICS на основе ресурсов, например!

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

Вы действительно должны придерживаться методического подхода и посмотреть, от чего зависит ваше приложение в Carbon и какие части вашего приложения независимы - например, ваши абстрактные классы. Если ваше приложение на C ++, могут возникнуть некоторые подводные камни при конвертации в чистый Objective-C. Например, может быть сложно заметить переопределения операторов.

Вы можете смешивать C ++ с Objective-C, как описано в Apple Руководство по интеграции углерод-какао , а в Интернете можно найти множество обёрток C ++ для таких фундаментальных объектов Cocoa , как NSStrings, Так что, если у вас уже есть классы C ++, которые оборачивают CFString, они могут пригодиться.

Вообще говоря, вы можете оставить свое хранилище данных таким, какое оно есть. Если вы используете malloc () и calloc () для создания связанного списка структур, то нет особой причины переходить к NSArray. Вы не получите лучшую производительность. Настоящее изменение происходит в интерфейсах, в способе вызова и доступа к этим данным из других объектов. Если вы решите смешивать объекты C ++ и Objective-C в одном приложении, это поможет максимально инкапсулировать. То есть, насколько это возможно, ваши абстрактные классы C ++ ссылаются только на свои собственные данные и данные других объектов C ++. В конечном итоге это облегчит перевод их в Objective-C.

Если вы переходите от одной модели событий к другой или из изображений на основе порта Carbon к изображениям на основе представлений Cocoa, вероятно, лучше всего начать со свежего приложения Objective-C и сначала перенести ваши классы моделей. Добавьте некоторые тестовые функции, чтобы убедиться, что все они работают на новом языке. Если ваше приложение чем-то похоже на мое (старое), то, вероятно, оно должно отображать некоторые элементы большего размера и иметь более четкий интерфейс. Сейчас самое время восстановить эти детали по частям.

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

...