Convenzioni API
Quando si utilizza l'API di EasyAR Sense, è necessario seguire alcune convenzioni, altrimenti potrebbero verificarsi arresti anomali del programma, perdite di memoria o altri comportamenti anomali.
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
La funzionalità C++17 utilizzata è solo std::optional. Se necessario utilizzare in un ambiente C++11, è possibile utilizzare optional lite, sostituendo std::optional negli header delle interfacce con nonstd::optional, e sostituendo
#include <optional>con#include "nonstd/optional.hpp"Java
Supporta solo piattaforma Android, supporta Java SE 6 e superiori
Kotlin
Supporta solo piattaforma Android
Objective-C
Supporta solo piattaforme iOS/macOS/visionOS
Swift
Supporta Swift 4.2 e superiori
C#
Supporta .Net Framework 3.5 e superiori, .Net Core, .Net 5+, Mono, Unity/Mono, Unity/IL2CPP
Modello di sicurezza dei thread
Per ogni classe, se non diversamente specificato, i suoi membri statici sono thread-safe.
Per ogni classe, se non diversamente specificato, i suoi membri di istanza sono thread-safe solo se esternamente sincronizzati (ad esempio, con lock). Senza sincronizzazione, non sono thread-safe.
Per ogni classe, se non diversamente specificato, è possibile chiamare il suo distruttore da qualsiasi thread dopo aver terminato altre chiamate sull'oggetto, ed è thread-safe in quel contesto.
Modello di memoria
Internamente, EasyAR Sense utilizza std::shared_ptr di C++ per il conteggio dei riferimenti. Esiste un'incompatibilità fondamentale tra il conteggio dei riferimenti e la garbage collection, impedendo una conversione senza soluzione di continuità.
C, C#, Java/Kotlin
Richiede un conteggio manuale dei riferimenti. Usa
disposeper rilasciare i riferimenti agli oggetti posseduti. Usacloneper creare un nuovo riferimento da uno esistente.È particolarmente importante notare che i parametri passati alle callback di EasyAR Sense vengono rilasciati automaticamente al termine della callback. Se è necessario conservarli, bisogna effettuare un
clone. Questo rilascio automatico è implementato per supportare l'uso di callback prive di logica interna.Attenzione: l'utilizzo di oggetti EasyAR Sense all'interno delle callback passate a EasyAR Sense potrebbe creare riferimenti circolari. Devono essere gestiti come risorse (ad esempio file, handle di sistema) e rilasciati manualmente per prevenire perdite di memoria.
C++, Objective-C, Swift
Utilizza il conteggio dei riferimenti nativo del linguaggio.
Attenzione: l'utilizzo di oggetti EasyAR Sense all'interno delle callback passate a EasyAR Sense potrebbe creare riferimenti circolari. Utilizzare appropriatamente la cattura per riferimento,
std::weak_ptr, o meccanismi equivalenti.
Codifica delle stringhe
La codifica delle stringhe utilizzata nelle interfacce è la seguente:
C, C++
UTF-8
Java, Kotlin, Objective-C, C#
UTF-16
Swift
UTF-16 o UTF-8, consultare la Documentazione Swift