- 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
NSBundle
instead ofdlopen
- Added struct support
- Improved type encoding handling
- Added
Instance.isNull
(also exposed asobjc.isNull
) to check whether aInstance
is holding a null pointer - Renamed
ptr
to__ptr
to indicate that it's an internal field
- fixed a bug where passing a
objc.InstanceProxy
toobjc.ns
would return an empty JS object
- Added
objc.createClass
- The
objc.Selector
constructor can now also be called w/ aSEL
pointer
- Implemented inout parameters
- Dropped support for node 7.x
- Added a
objc.swizzle
function
- 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
NSSet
instances
- 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.ns
andobjc.js
functions 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
nil
object 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