Я сам работаю над этим процессом прямо сейчас, и это довольно сложное мероприятие для полноценного приложения на основе документов, которое использует несколько фреймворков. В приложении My Carbon есть десятки пунктов меню, интерфейс построен с использованием Carbon Nibs и реализован с использованием перехватчиков событий Carbon. Язык программирования - C ++. Возвращаясь к истории, оригинальная классическая версия Mac была реализована на прямом языке C, так что есть немного наследия той эпохи. Например, PICS на основе ресурсов!
Можно использовать несколько подходов, поэтому дальнейшие действия зависят от конкретной ситуации. В моем случае я решил начать с простого проекта, основанного на документе Какао, и начать создавать код загрузки документа, потому что крючки для этого уже есть в пустом проекте. Мне кажется, это хорошее место для начала, потому что это вводит меня в режим работы с Какао и размышления о приложении с точки зрения более мелких частей.
Вам действительно нужно применить методический подход и посмотреть, от чего зависит ваше приложение в Carbon, а не от того, какие части вашего приложения являются независимыми - например, ваши абстрактные классы. Если ваше приложение написано на C ++, при переходе на чистый Objective-C могут возникнуть некоторые подводные камни. Например, может быть сложно заметить переопределение оператора.
Вы можете смешивать C ++ с Objective-C, как описано в Apple Руководство по интеграции углерода и какао, а в Интернете можно найти множество оболочек C ++ для основных объектов, таких как NSStrings. Так что, если у вас уже есть классы C ++, которые обертывают CFString, они могут пригодиться.
Вообще говоря, вы можете оставить свое хранилище данных в том виде, в каком оно есть. Если вы используете malloc () и calloc () для создания связанного списка структур, нет особых причин переходить на NSArray. Вы не получите лучшей производительности. Настоящее изменение происходит в интерфейсах, в том, как вы вызываете и получаете доступ к этим данным из других объектов. Если вы решите смешать объекты C ++ и Objective-C в одном приложении, это поможет инкапсулировать как можно больше. То есть, насколько это возможно, сделайте так, чтобы ваши абстрактные классы C ++ ссылались только на свои собственные данные и данные других объектов C ++. В конце концов, это упростит их перевод на Objective-C.
Если вы переходите от одной модели событий к другой или от визуализации на основе портов Carbon к визуализации на основе представлений Какао, вероятно, лучше всего начать со свежего приложения Objective-C и сначала перенести классы вашей модели. Добавьте несколько тестовых функций, чтобы убедиться, что все они работают с новым языком. Если ваше приложение чем-то похоже на мое (старое), то, вероятно, оно должно отображать некоторые элементы большего размера и иметь более совершенный интерфейс. Это хорошее время, чтобы восстановить эти детали по частям.
Определенно нет отличного ярлыка. Приведенный выше PDF-файл - лучший документ, который я нашел по этой теме.
person
Scott Lahteine
schedule
14.08.2011