Table of Contents

Convenciones de la api

Al utilizar la API de EasyAR Sense, es necesario seguir algunas convenciones; de lo contrario, podría causar bloqueos del programa, fugas de memoria u otros comportamientos anómalos.

Idiomas compatibles

EasyAR Sense admite los siguientes idiomas:

  • C

    Compatible con C99 y Visual C++, gcc, clang

  • C++

    Compatible con 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 emplear optional lite, reemplazando std::optional en los archivos de encabezado de la interfaz por nonstd::optional, y sustituyendo #include <optional> por #include "nonstd/optional.hpp"

  • Java

    Solo compatible con la plataforma Android, admite Java SE 6 y superiores

  • Kotlin

    Solo compatible con la plataforma Android

  • Objective-C

    Solo compatible con plataformas iOS/macOS/visionOS

  • Swift

    Compatible con Swift 4.2 y superiores

  • C#

    Compatible con .Net Framework 3.5 y superiores, .Net Core, .Net 5+, Mono, Unity/Mono, Unity/IL2CPP

Modelo de seguridad para subprocesos

Para cada clase, si no se especifica lo contrario, sus miembros estáticos son seguros para subprocesos.

Para cada clase, si no se especifica lo contrario, sus miembros de instancia son seguros para subprocesos cuando se utiliza bloqueo externo, pero no lo son sin dicho bloqueo.

Para cada clase, si no se especifica lo contrario, su destructor puede llamarse desde cualquier subproceso después de finalizar otras llamadas al objeto, siendo seguro para subprocesos en ese momento.

Modelo de memoria

EasyAR Sense utiliza internamente std::shared_ptr de C++ para el recuento de referencias. Existe una incompatibilidad fundamental entre el recuento de referencias y la recolección de basura, lo que impide una conversión perfecta.

  • C, C#, Java/Kotlin

    Requiere recuento de referencias manual. Use dispose para liberar referencias a objetos retenidos, y clone para crear una nueva referencia a partir de una existente.

    Es crucial destacar que los parámetros pasados a las devoluciones de llamada (callbacks) de EasyAR Sense se liberan automáticamente después de que finaliza el callback. Si necesita conservarlos, debe clonarlos. Esta liberación automática existe para admitir callbacks sin lógica interna.

    Tenga en cuenta que el uso de objetos de EasyAR Sense dentro de un callback pasado a EasyAR Sense puede causar referencias circulares. Deben tratarse como recursos (por ejemplo, archivos, identificadores del sistema operativo) y liberarse manualmente para prevenir fugas de memoria.

  • C++, Objective-C, Swift

    Utiliza el recuento de referencias incorporado en el lenguaje.

    Tenga en cuenta que el uso de objetos de EasyAR Sense dentro de un callback pasado a EasyAR Sense puede causar referencias circulares. Se debe usar adecuadamente la captura de referencias, std::weak_ptr, etc.

Codificación de cadenas

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