NObjective is a high-performance bridge connecting the world of unmanaged Objective-C code with .NET managed code.
Existing bridges ( Cocoa , Monobjc , mobjc ) do not satisfy with more than one parameter:
- Minimal overhead costs. The bridge should consume a minimum of memory and at the same time work as quickly as possible.
- The ability to automatically generate code for Objective-C wrappers. Apple from version to version of its operating system changes both the existing Objective-C classes , and adds new ones and each time updating / correcting the source code of the wrapper classes is both disadvantageous in time and fraught with errors related to the human factor. For example, in Tiger, there are approximately 2,000 main classes and 20,000 methods for them, while Leopard already has 2,300 classes and 23,000 methods . Using code generation will allow you to get the generated wrappers for any new version of Mac OS X in about a few seconds.
- Cross-runtime exception throwing. Mono is usually not very pretty longjmp with the behavior of Objective-C exceptions. Objective-C also in the language of stack frames says that .NET exceptions are not to its liking. Usually, LIBFFI is used in such cases, but PowerPC and x86 assembler jumps are used in this bridge, which allow for the fastest and most secure managed <--> unamanged transitions.
- Work on both, the most popular versions of Mac OS X Tiger and Leopard .