Table of Contents

Conventions API

Lors de l'utilisation des API EasyAR Sense, certaines conventions doivent être respectées. Sinon, le programme peut planter, des fuites mémoire peuvent se produire ou d'autres comportements anormaux à l'exécution peuvent apparaître.

Langages pris en charge

EasyAR Sense prend en charge les langages suivants :

  • C

    Prend en charge C99 et Visual C++, gcc, clang

  • C++

    Prend en charge C++17 et Visual C++, gcc, clang

    La seule fonctionnalité C++17 utilisée est std::optional. Si vous devez l'utiliser dans un environnement C++11, vous pouvez utiliser optional lite, remplacer std::optional dans les fichiers d'en-tête d'interface par nonstd::optional et remplacer #include <optional> par #include "nonstd/optional.hpp"

  • Java

    Pris en charge uniquement sur la plateforme Android, Java SE 6 et versions ultérieures

  • Kotlin

    Pris en charge uniquement sur la plateforme Android

  • Objective-C

    Pris en charge uniquement sur les plateformes iOS/macOS/visionOS

  • Swift

    Prend en charge Swift 4.2 et versions ultérieures

  • C#

    Prend en charge .Net Framework 3.5 et versions ultérieures, .Net Core, .Net 5+, Mono, Unity/Mono, Unity/IL2CPP

Modèle de thread safety

Pour chaque classe, sauf indication contraire, ses membres statiques sont thread-safe.

Pour chaque classe, sauf indication contraire, ses membres d'instance sont thread-safe lorsqu'ils sont verrouillés extérieurement, et ne sont pas thread-safe sans verrouillage.

Pour chaque classe, sauf indication contraire, après la fin de tous les autres appels à l'objet, son destructeur peut être appelé depuis n'importe quel thread, et cela est thread-safe.

Modèle mémoire

EasyAR Sense utilise en interne C++ std::shared_ptr pour le comptage de références, et il existe une incompatibilité fondamentale entre le comptage de références et le garbage collection ; ils ne peuvent donc pas être convertis de façon transparente.

  • C, C#, Java/Kotlin

    Un comptage manuel des références est nécessaire. Utilisez dispose pour libérer les références aux objets détenus, et clone pour créer une nouvelle référence à partir d'une référence existante.

    Il faut particulièrement noter que les paramètres passés aux callbacks EasyAR Sense sont automatiquement libérés après la fin du callback. Si vous devez les conserver, vous devez les cloner. Cette libération automatique sert à prendre en charge les callbacks ne contenant aucune logique.

    Notez que l'utilisation d'objets EasyAR Sense dans les callbacks passés à EasyAR Sense peut provoquer des références circulaires. Ils doivent être libérés manuellement comme des ressources (par exemple des fichiers ou des handles du système d'exploitation) afin d'éviter les fuites mémoire.

  • C++, Objective-C, Swift

    Utilisent le comptage de références intégré au langage.

    Notez que l'utilisation d'objets EasyAR Sense dans les callbacks passés à EasyAR Sense peut provoquer des références circulaires. Utilisez de façon appropriée la capture par référence, std::weak_ptr et les mécanismes similaires.

Encodage des chaînes

L'encodage des chaînes utilisées dans les interfaces est le suivant :

  • C, C++

    UTF-8

  • Java, Kotlin, Objective-C, C#

    UTF-16

  • Swift

    UTF-16 ou UTF-8, consultez la documentation Swift