Table of Contents

Convenciones de API

Al usar las API de EasyAR Sense, debe seguir algunas convenciones. De lo contrario, el programa puede bloquearse, pueden producirse memory leaks u otras situaciones anormales en tiempo de ejecución.

Lenguajes compatibles

EasyAR Sense admite los siguientes lenguajes:

  • C

    Admite C99 y Visual C++, gcc, clang

  • C++

    Admite C++17 y Visual C++, gcc, clang

    La única característica de C++17 utilizada es std::optional. Si necesita usarlo en un entorno C++11, puede usar optional lite, sustituir std::optional en los archivos de cabecera de la interfaz por nonstd::optional y sustituir #include <optional> por #include "nonstd/optional.hpp"

  • Java

    Solo se admite en la plataforma Android, compatible con Java SE 6 y versiones posteriores

  • Kotlin

    Solo se admite en la plataforma Android

  • Objective-C

    Solo se admite en plataformas iOS/macOS/visionOS

  • Swift

    Admite Swift 4.2 y versiones posteriores

  • C#

    Admite .Net Framework 3.5 y versiones posteriores, .Net Core, .Net 5+, Mono, Unity/Mono, Unity/IL2CPP

Modelo de seguridad de hilos

Para cada clase, salvo que se indique lo contrario, sus miembros estáticos son thread-safe.

Para cada clase, salvo que se indique lo contrario, sus miembros de instancia son thread-safe cuando se bloquean externamente, y no son thread-safe cuando no se bloquean.

Para cada clase, salvo que se indique lo contrario, después de que finalicen todas las demás llamadas al objeto, su destructor puede llamarse desde cualquier hilo, y esto es thread-safe.

Modelo de memoria

EasyAR Sense utiliza internamente C++ std::shared_ptr para el conteo de referencias, y existe una incompatibilidad fundamental entre el conteo de referencias y la garbage collection, por lo que no pueden convertirse de forma transparente.

  • C, C#, Java/Kotlin

    Se requiere conteo manual de referencias. Use dispose para liberar las referencias a los objetos mantenidos y clone para crear una nueva referencia desde una referencia existente.

    Preste especial atención a que los parámetros pasados a callbacks de EasyAR Sense se liberan automáticamente después de que finaliza el callback. Si necesita conservarlos, debe hacer clone. La razón de la liberación automática es admitir callbacks que no contienen ninguna lógica.

    Tenga en cuenta que usar objetos EasyAR Sense en callbacks pasados a EasyAR Sense puede causar referencias circulares. Deben liberarse manualmente como recursos (por ejemplo, archivos o handles del sistema operativo) para evitar memory leaks.

  • C++, Objective-C, Swift

    Use el conteo de referencias incorporado del lenguaje.

    Tenga en cuenta que usar objetos EasyAR Sense en callbacks pasados a EasyAR Sense puede causar referencias circulares. Use adecuadamente captura por referencia, std::weak_ptr y mecanismos similares.

Codificación de cadenas

La codificación de las cadenas utilizadas en las interfaces es la siguiente: