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:
C, C++
UTF-8
Java, Kotlin, Objective-C, C#
UTF-16
Swift
UTF-16 o UTF-8, consulte la Documentación de Swift