Я сам сейчас работаю над этим процессом, и это довольно сложное мероприятие для полноценного основанного на документе приложения, использующего несколько платформ. В приложении 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 - лучший документ, который я нашел по этой теме.