Разработка Windows с использованием Objective-C - PullRequest
9 голосов
/ 09 декабря 2010

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

У меня нет намерений заниматься разработкой для iPhone, однако я понимаю, что GCC способен компилировать код Objective-C, и поэтому я хотел знать - Является ли Objective-C жизнеспособной альтернативой языку C99 для разработки Windows?

В частности:

  • Кто-нибудь в настоящее время занимается разработкой Windows с использованием Objective-C?
  • Существуют ли какие-либо компоненты времени выполнения, которые необходимо распространять вместе с моими приложениями?
  • Я понимаю, что Objective-C является надмножеством C, означает ли это, что можно использовать любую C-совместимую библиотеку? (например, Windows API)
  • Получу ли я сборку мусора в моих приложениях?
  • Я нашел Cocotron и GNUstep , которые часто упоминаются, когда речь идет об использовании Objective-C на других платформах, однако GCC уже можно использовать для компиляции Objective-C I не очень понимаю, зачем мне это нужно.
  • Существуют ли какие-либо другие ловушки или ловушки, с которыми я мог бы столкнуться при попытке разработки Windows с использованием Objective-C?

Ответы [ 2 ]

8 голосов
/ 09 декабря 2010

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

Во-вторых, вам понадобится как минимум время выполнения target-c.Существует две среды выполнения, NeXT (сейчас Apple) и GNU Objective-C.Они не совместимы.Если вы работаете не на платформе NeXT и не на платформе Apple, например Windows, у вас нет выбора, только среда выполнения GNU.

Objective-C - это расширенный набор C, и да, вы можете использовать Win32 APIесли вы так хотите прямо в вашем коде цель-c.Кроме того, вы получите сборку мусора только в том случае, если вы используете консервативный сборщик, и он связан с используемыми вами библиотеками.Вкратце: Нет.

В GCC есть поддержка языка Objective-C и среды выполнения, а не стандартной библиотеки.Среда выполнения GNU objc предоставляет вам в виде стандартной библиотеки два объекта: Object и класс NXConstantString, которые необходимы для поддержки синтаксиса @"".Object это просто базовый класс.Не очень полезно, а?Вот почему существуют фреймворки, такие как Cocotron и GNUstep - чтобы дать вам доступ к реализации OPENSTEP / Cocoa.

Что касается ловушек или ловушек, да: ваше приложение, даже используя Cocotron или GNUstep, никогда не будет переносимым на Macнапример, или вы можете столкнуться с такими вещами, как типизированные селекторы во время выполнения GNU objc или множество других проблем.Позвольте мне закончить, отвечая на это, поставив другой вопрос: с какими подводными камнями или ловушками вы можете столкнуться при нацеливании на .NET?Я уверен, что некоторые, если не большинство, применимы и в этом случае.Применяются стандартные ловушки и ловушки.

Надеюсь, это поможет.

0 голосов
/ 24 января 2011

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

Для инструментов компилятора существует LLVM / Clang, которые имеют открытый исходный код по лицензии BSD.Компилятор спонсируется Apple, поэтому он полностью компилирует Objective-C и становится основным компилятором для Apple.Так что компилятор больше не проблема.

Проблема в библиотеке среды выполнения.Язык Objective-C зависит от времени выполнения.Время выполнения определяет все поведение объектной системы и некоторые другие.Библиотека среды выполнения является основной системой и отличается от библиотеки фреймворков, такой как Cocoa или Quartz.в .NET это CRE, а не библиотека классов .NET Framework.Без времени выполнения программа не может быть выполнена, как .NET-программа, выполняемая в Windows без времени выполнения .NET.

Для получения дополнительной информации проверьте этот диалог: http://lists.cs.uiuc.edu/pipermail/cfe-dev/2010-January/007593.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...