Table of Contents

Convenzioni API

Quando si usano le API di EasyAR Sense, è necessario seguire alcune convenzioni. In caso contrario, il programma potrebbe andare in crash, potrebbero verificarsi memory leak o altre situazioni di runtime anomale.

Linguaggi supportati

EasyAR Sense supporta i seguenti linguaggi:

  • C

    Supporta C99 e Visual C++, gcc, clang

  • C++

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

    L'unica funzionalità C++17 usata è std::optional. Se è necessario usarla in un ambiente C++11, è possibile usare optional lite, sostituire std::optional nei file header dell'interfaccia con nonstd::optional e sostituire #include <optional> con #include "nonstd/optional.hpp"

  • Java

    Supportato solo sulla piattaforma Android, supporta Java SE 6 e versioni successive

  • Kotlin

    Supportato solo sulla piattaforma Android

  • Objective-C

    Supportato solo sulle piattaforme iOS/macOS/visionOS

  • Swift

    Supporta Swift 4.2 e versioni successive

  • C#

    Supporta .Net Framework 3.5 e versioni successive, .Net Core, .Net 5+, Mono, Unity/Mono, Unity/IL2CPP

Modello di thread safety

Per ogni classe, salvo diversa indicazione, i suoi membri statici sono thread-safe.

Per ogni classe, salvo diversa indicazione, i suoi membri di istanza sono thread-safe se bloccati esternamente, e non sono thread-safe senza blocco.

Per ogni classe, salvo diversa indicazione, dopo la fine di tutte le altre chiamate all'oggetto, il suo distruttore può essere chiamato da qualsiasi thread, e ciò è thread-safe.

Modello di memoria

EasyAR Sense usa internamente C++ std::shared_ptr per il conteggio dei riferimenti, e tra conteggio dei riferimenti e garbage collection esiste un'incompatibilità fondamentale, quindi non possono essere convertiti in modo trasparente.

  • C, C#, Java/Kotlin

    È necessario il conteggio manuale dei riferimenti. Usare dispose per rilasciare i riferimenti agli oggetti detenuti e usare clone per creare un nuovo riferimento da un riferimento esistente.

    Prestare particolare attenzione al fatto che i parametri passati ai callback di EasyAR Sense vengono rilasciati automaticamente al termine del callback. Se è necessario conservarli, bisogna eseguire clone. Il motivo del rilascio automatico è supportare callback che non contengono alcuna logica.

    Si noti che l'uso di oggetti EasyAR Sense nei callback passati a EasyAR Sense può causare riferimenti circolari. Devono essere rilasciati manualmente come risorse (ad esempio file o handle del sistema operativo) per prevenire memory leak.

  • C++, Objective-C, Swift

    Usano il conteggio dei riferimenti integrato nel linguaggio.

    Si noti che l'uso di oggetti EasyAR Sense nei callback passati a EasyAR Sense può causare riferimenti circolari. Usare in modo appropriato capture per riferimento, std::weak_ptr e meccanismi simili.

Codifica delle stringhe

La codifica delle stringhe usate nelle interfacce è la seguente:

  • C, C++

    UTF-8

  • Java, Kotlin, Objective-C, C#

    UTF-16

  • Swift

    UTF-16 oppure UTF-8, vedere la documentazione Swift