NObjective

Материал из Википедии — свободной энциклопедии
Это текущая версия страницы, сохранённая InternetArchiveBot (обсуждение | вклад) в 11:52, 15 марта 2022 (Спасено источников — 2, отмечено мёртвыми — 0. Сообщить об ошибке. См. FAQ.) #IABot (v2.0.8.6). Вы просматриваете постоянную ссылку на эту версию.
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

NObjective — это высокопроизводительный мост связывающий мир неуправляемого Objective-C кода с управляемым кодом .NET.

Существующие мосты (Cocoa, Monobjc, mobjc) не удовлетворяют более чем по одному параметру:

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