NObjective

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.

Ссылки

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.