Возможно ли перейти на цель-с на этих платформах и ситуации?
Я написал большую часть игрового движка с использованием C++, который работает на OSX и iOS (Xcode 3.5, GCC), Linux (GCC) и Windows (Vis Studio 2010). Он использует вектор stl для коллекций объектов. Реализует передачу сообщений. Движок использует OpenGL на платформе iOS и в конечном итоге будет использовать OpenGL на всех платформах и, возможно, DirectX на Windows.
Мне действительно не нравится C++, хотя я очень хорошо это понимаю. Я программист на Си и после знакомства с Objective-C год назад я понял, что он идеально подходит для моей работы и мышления. Так что для меня было бы огромным преимуществом перейти на Objective-C. К сожалению, прекрасный мир OSX/Cocoa не является реальностью Windows или Linux.. или это так?
Я уверен, что евангелист Какао /Apple/NeXT предоставит мне шедевр ответа здесь
Редактировать:
Похоже, Cocotron и GNUstep - это два варианта, причем GNUstep более зрелый, но, похоже, требует больше багажа, например требует времени выполнения.
Мне нужно решение, которое может соответствовать этим требованиям:
- Возможность компилировать, запускать, отлаживать Objective-C на всех платформах
- Возможность использовать вызовы API Какао на всех платформах (т.е. NSString, NSNumber..)
- Конечные пользователи должны иметь возможность устанавливать и запускать мое приложение, не устанавливая ничего лишнего, или, по крайней мере, мой установщик должен иметь возможность легко и не повсеместно устанавливать что-либо (например, время выполнения). GNUstep требует времени выполнения, Cocotron не
- Объясняет, по каким вопросам я могу столкнуться. Например, смогу ли я использовать предоставленный материал Какао для анализа XML? Как насчет CFSocket? Как насчет CG? Где заканчивается решение, и я вхожу в область специфичных для ОС библиотек, которые не портированы?
Идеально:
- Может поддерживать замыкания (блоки) на всех платформах, так что я могу использовать GCD и libdispatch по мере их появления, даже если это сводится к менее эффективной ситуации на сторонних платформах
- API, позволяющий управлять данными типа Core Data (я мечтаю здесь), даже если это сводится к менее эффективной ситуации на неродных платформах
- Перспективное решение, которое, возможно, будет использовать LLVM, так как кажется, что все движется
НЕ ТРЕБУЕТСЯ:
- Функциональность GUI, такая как рисование NSView и т. Д.
- Функциональность IDE, кроме OSX
- Objective-C 2.0
- Objective-C++
- Вывоз мусора
- Простота моей настройки: то есть, все в порядке, если мне сложно настроить и настроить работу, если рабочее решение соответствует моим потребностям и позволяет мне писать код, который будет легким (переносимым в соответствии с требованиями). выше) и не причиняет никакой боли моим пользователям.
3 ответа
Cocotron - абсолютно феноменальное программное обеспечение, которое до сих пор удовлетворяло все мои потребности. В то время как документация скудна и ее трудно понять и начать работать, она чрезвычайно полезна и очень хороша.
LLVM/blocks/libdispatch пока не выглядит вполне реальностью, хотя это может быть, но я думаю, что, безусловно, при переходе на Xcode 4 все это будет очень реально. Это действительно сводится к тому, что minGW работает с LLVM.
Существует даже реализация Core Data.. вау
Блоки clang + (замыкания) теперь доступны в linux с использованием libdispatch
sudo apt-get установить libblocksruntime-dev
clang test.c -fblocks -lBlocksRuntime -o test
Objective-C доступен на любой платформе, на которой доступен GCC, при условии, что это не тот компилятор GCC Objective-C, который использует Apple. Какао и все прелести OSX/iOS, которые с ним связаны, это не так, это главная причина того, что Objective-C не пользуется большим спросом на не-OSX платформах, нет действительно надежной библиотеки, такой как Cocoa, которая является перекрестной -Платформа. GNUstep - это стандартная библиотека с открытым исходным кодом, которая похожа на Какао, но существует уже более 10 лет и до сих пор не завершена, и основана на OpenStep, который настолько удален от Какао, что не имеет значения. Есть также кое-что под названием Cocotron, которое более новое, но все еще выглядит неполным. Xcode, вероятно, единственная хорошая среда Objective-C. Я уверен, что где-то в Интернете есть какой-то неясный плагин Eclipse, но он никогда не будет конкурировать с XCode. Я сомневаюсь, что что-то даст вам кроссплатформенные приложения, подобные GUI-приложениям, лучше всего было бы написать привязки Objective-C вокруг QT для кроссплатформенных графических интерфейсов, но для этого потребуется компилятор GCC, чтобы иметь возможность компилировать Objective-C++.