- Added a struct compound initializer (see block.js for a usage example)
- Updated a bunch of outdated dependencies, removed some dependencies
- Updated the ffi module
- Updated supported node versions to >=8
- Updated the framework loading code to use
NSBundleinstead ofdlopen
- Added struct support
- Improved type encoding handling
- Added
Instance.isNull(also exposed asobjc.isNull) to check whether aInstanceis holding a null pointer - Renamed
ptrto__ptrto indicate that it's an internal field
- fixed a bug where passing a
objc.InstanceProxytoobjc.nswould return an empty JS object
- Added
objc.createClass - The
objc.Selectorconstructor can now also be called w/ aSELpointer
- Implemented inout parameters
- Dropped support for node 7.x
- Added a
objc.swizzlefunction
- Added support for loading
NSString*constants - Cache imported frameworks to avoid loading the same framework multiple times
- Better handling of null return values
- Iterate over
NSSetinstances
- Rewrote everything in JavaScript (no more c++ bindings)
- This removes support for accessing objc constants (will be re-implemented in the future)
- Added Block support
- Exception handling
- Allow omitting the last underscore in method calls
New
- JavaScript Arrays passed to ObjC methods will now automatically be converted to
NSArray *instances - Added
objc.nsandobjc.jsfunctions to convert compatible objects (String<->NSString,Date<->SDate, etc.) - Added support for iterating over enumerable Objective-C objects (using
objectEnumerator) - Implemented Selector resolving, meaning that you now can call objc methods that contain an underscore
- Added a bunch of documentation
- Added a bunch of tests
Changed
- Explicitly require C++14
- Removed NodeJS v6.x support (incompatible w/ C++14)
Fixed
- Fixed the random "misaligned pointer" bug
- Logging an ObjCProxy holding a
nilobject no longer crashes the node process
- Added basic support for inout parameters (like
NSError **)
- Added the
constant(name, [bundle])function to load an ObjC string constant - Constants can also be accessed directly from the module, the same way as classes are loaded
- Initial release