NObjective
— это высокопроизводительный мост связывающий мир неуправляемого
Objective-C
кода с управляемым кодом
.NET
.
Существующие мосты (
Cocoa
,
,
) не удовлетворяют более чем по одному параметру:
Минимальные непроизводительные издержки. Мост должен потреблять минимум памяти и при этом работать максимально быстро.
Возможность автоматической генерации кода для
Objective-C
обёрток.
Apple
из версии в версию своей
операционной системы
меняет как существующие
Objective-C
классы
, так и добавляет новые и каждый раз обновлять/исправлять исходники классов обёрток как невыгодно по времени так и чревато ошибками связанными с человеческим фактором. К примеру в
Tiger
насчитывается примерно 2000 основных
классов
и 20 000
методов
к ним, а в
Leopard
уже 2300
классов
и 23 000
методов
. Использование
кодогенерации
позволит примерно за считанные секунды получить сгенерированные обёртки на любую новую версию
Mac OS X
.
Кросс-рантаймовый проброс исключений.
Mono
обычно не очень довольно
longjmp
поведением
Objective-C
исключений.
Objective-C
тоже на языке стек-фреймов говорит что ему
.NET
исключения тоже не по душе. Обычно в таких случаях используется
, но в этом мосте используется
PowerPC
и
x86
ассемблерные трамплины, позволяющие делать максимально быстрые и защищённые
managed<-->unamanged
переходы.
Работа на обеих, наиболее популярных версиях Mac OS X
Tiger
и
Leopard
.