Table of Contents

Convenções de API

Ao usar as APIs do EasyAR Sense, é necessário seguir algumas convenções. Caso contrário, o programa pode travar, podem ocorrer memory leaks ou outras situações anormais em tempo de execução.

Linguagens compatíveis

EasyAR Sense oferece suporte às seguintes linguagens:

  • C

    Suporta C99 e Visual C++, gcc, clang

  • C++

    Suporta C++17 e Visual C++, gcc, clang

    O único recurso de C++17 usado é std::optional. Se precisar usá-lo em um ambiente C++11, você pode usar optional lite, substituir std::optional nos arquivos de cabeçalho da interface por nonstd::optional e substituir #include <optional> por #include "nonstd/optional.hpp"

  • Java

    Suportado apenas na plataforma Android, com suporte a Java SE 6 e posteriores

  • Kotlin

    Suportado apenas na plataforma Android

  • Objective-C

    Suportado apenas nas plataformas iOS/macOS/visionOS

  • Swift

    Suporta Swift 4.2 e posteriores

  • C#

    Suporta .Net Framework 3.5 e posteriores, .Net Core, .Net 5+, Mono, Unity/Mono, Unity/IL2CPP

Modelo de thread safety

Para cada classe, salvo indicação em contrário, seus membros estáticos são thread-safe.

Para cada classe, salvo indicação em contrário, seus membros de instância são thread-safe quando bloqueados externamente, e não são thread-safe quando não estão bloqueados.

Para cada classe, salvo indicação em contrário, depois que todas as outras chamadas ao objeto terminarem, seu destrutor pode ser chamado de qualquer thread, e isso é thread-safe.

Modelo de memória

EasyAR Sense usa internamente C++ std::shared_ptr para contagem de referências, e existe uma incompatibilidade fundamental entre contagem de referências e garbage collection, portanto eles não podem ser convertidos de forma transparente.

  • C, C#, Java/Kotlin

    É necessária contagem manual de referências. Use dispose para liberar referências aos objetos mantidos, e use clone para criar uma nova referência a partir de uma referência existente.

    Preste atenção especial ao fato de que os parâmetros passados aos callbacks do EasyAR Sense são liberados automaticamente após o término do callback. Se precisar mantê-los, você deve fazer clone. A razão da liberação automática é oferecer suporte a callbacks que não contêm nenhuma lógica.

    Observe que usar objetos EasyAR Sense em callbacks passados ao EasyAR Sense pode causar referências circulares. Eles precisam ser liberados manualmente como recursos (por exemplo, arquivos ou handles do sistema operacional) para evitar memory leaks.

  • C++, Objective-C, Swift

    Usam a contagem de referências integrada à linguagem.

    Observe que usar objetos EasyAR Sense em callbacks passados ao EasyAR Sense pode causar referências circulares. Use adequadamente captura por referência, std::weak_ptr e mecanismos semelhantes.

Codificação de strings

A codificação das strings usadas nas interfaces é a seguinte: