Смешивание языков - Python и Objective-C

Я знаю, что Objective-C++ может существовать, потому что Objective-C и C++ имеют общую основу в C. Но как Objective-C может сосуществовать с Python? Я знаю, что это должно быть возможно, потому что wxPython использует Какао для рисования интерфейсов.

Я пишу движок карточных игр для OS X. Он сможет играть более чем в одну игру (Klondike, Spider, Free Cell, возможно, даже Hearts или Poker). Он будет работать с Game Center, поэтому мне нужно иметь доступную инфраструктуру Cocoa, но я бы хотел написать API Python, чтобы я мог писать сами игры на Python (потому что это проще в использовании и более динамично). Как бы я реализовал подобную смесь языков в своем приложении?

2 ответа

Решение

Если приложение Python использует скомпилированные внешние библиотеки, то это расширение Python. Документация для этого здесь.

Если скомпилированное приложение использует Python для сценариев, то это встраивание Python. Документация для этого здесь.

Я не эксперт по какао, но я думаю, что вы неправильно поняли смысл его использования. Какао - это просто библиотека, которая экспортирует некоторые функции. Его можно использовать из всего, что способно понять сигнатуры функций. Это не означает, что эта вещь должна быть совместима с объективом. Это просто означает, что он должен быть способен понимать соглашение о вызовах.

Однако я совершенно уверен, что Python может работать как на стандартном C, так и на ObjC (поскольку IIRC - это расширение первого), поэтому я не понимаю, почему невозможно сделать привязки Cocoa для Python... Кажется, Apple поддержать его https://developer.apple.com/technologies/mac/cocoa.html

Динамическая среда выполнения Objective-C похожа на многие современные языки сценариев, что упрощает сопоставление функций Cocoa с другими языками с помощью Cocoa Bridge. С помощью Cocoa Bridge разработчики могут создавать первоклассные приложения Mac OS X, используя AppleScript, Ruby и Python.

Итак, ваше следующее ключевое слово для проверки: Cocoa Bridge и, может быть, https://developer.apple.com/cocoa/pyobjc.html тоже?

Другие вопросы по тегам