Я написал большую часть игрового движка на 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 предоставит мне шедевр ответа здесь
Edit:
Похоже, Cocotron и GNUstep - это два варианта, причем GNUstep более зрелый, но, похоже, требует больше багажа, например требует времени выполнения.
Мне нужно решение, которое бы соответствовало следующим требованиям:
- Возможность компилировать, запускать, отлаживать Objective-C на всех платформах
- Возможность использовать вызовы API Какао на всех платформах (т. Е. NSString, NSNumber ..)
- Конечные пользователи должны иметь возможность устанавливать и запускать мое приложение, не устанавливая ничего лишнего, или, как минимум, мой установщик должен иметь возможность легко и не повсеместно устанавливать что-либо (например, время выполнения) GNUstep требует времени выполнения Кокотрон не
- Объясняет, какие проблемы я могу решить. Например, смогу ли я использовать предоставленный материал Какао для анализа XML? Как насчет CFSocket? Как насчет CG? Где заканчивается решение, и я вхожу в область специфичных для ОС библиотек, которые не портированы?
Ideal:
- Может поддерживать замыкания (блоки) на всех платформах, так что я могу использовать GCD и libdispatch по мере их появления, даже если это сводится к менее эффективной ситуации на неродных платформах
- API, позволяющий управлять данными типа Core Data (я мечтаю здесь), даже если он сводится к менее эффективной ситуации на неродных платформах
- Перспективное решение, которое, возможно, будет использовать LLVM, поскольку похоже, что все движется
НЕ требуется:
- Функции графического интерфейса, такие как рисование NSView и т. Д.
- Функциональность IDE, кроме OSX
- Objective-C 2.0
- Objective-C ++
- Сборка мусора
- Простота моей настройки: то есть, все в порядке, если мне больно настраивать и настраивать на работу, если рабочее решение соответствует моим потребностям и позволяет мне писать код это будет легко (переносимо в соответствии с требованиями выше) и не причинит никакой боли моим пользователям.