Pull to refresh

NodObjC — мост между Objective-C и Node.JS

Reading time 2 min
Views 1.8K
Original author: Nathan Rajlich
Я просто хотел бы шокировать вас моими последними достижениями в области хакинга: я создал двунаправленный мост к библиотекам выполнения Objective-C из среды Node. Эта сумасшедшая штука позволяет делать замечательные вещи, например, писать родные приложения для MacOS X и iOS полностью на Node и JavaScript!

Я создал высокоуровневую библиотеку, которую назвал NodObjC, и она предлагает лёгкий для использования API, непосредственно формируемый из API библиотек Objective-C. Вот пример из README:
var $ = require('NodObjC');

// First you need to "import" the Framework
$.import('Foundation');

// Setup the recommended NSAutoreleasePool instance
var pool = $.NSAutoreleasePool('alloc')('init');

// NSStrings and JavaScript Strings are distinct objects, you must create an
// NSString from a JS String when an Objective-C class method requires one.
var string = $.NSString('stringWithUTF8String', 'Hello Objective-C World!');

// Print out the contents (calling [string description])
console.log('%s', string);
//   → Prints "Hello Objective-C World!"
pool('drain');

Дополнительно доступен низкоуровневый модуль node-objc, который предоставляет доступ к внутренностям библиотеки выполнения Objective-C. Я не рекомендую использовать этот API напрямую, это просто модуль, которым пользуется NodObjC для реализации своей магии.

Оба модуля пока что совершенно неполны, но я имею хорошее представление о том, как их дополнить, и просто хочу обратить внимание сообщества на эту инициативу. Пожалуйста, пробуйте и пишите мне, чтобы поддержать мою мотивацию на высоком уровне!!!

Примечания переводчика:
  • Лучше ставить этот модуль через npm;
  • Эти модули основаны на низкоуровневой магии модуля node-ffi, позволяющего обращаться к динамическим библиотекам из JavaScript.
Tags:
Hubs:
+31
Comments 22
Comments Comments 22

Articles