API 規約
EasyAR Sense の API を使用する際は、いくつかの規約に従う必要があります。そうしないと、プログラムのクラッシュ、メモリリーク、またはその他の実行時の異常が発生する可能性があります。
サポートされる言語
EasyAR Sense は次の言語をサポートします:
C
C99 および Visual C++、gcc、clang をサポート
C++
C++17 および Visual C++、gcc、clang をサポート
使用される C++17 機能は std::optional のみです。C++11 環境で使用する必要がある場合は、optional lite を使用し、interface header file 内の std::optional を nonstd::optional に置き換え、
#include <optional>を#include "nonstd/optional.hpp"に置き換えることができますJava
Android プラットフォームのみ対応、Java SE 6 以降をサポート
Kotlin
Android プラットフォームのみ対応
Objective-C
iOS/macOS/visionOS プラットフォームのみ対応
Swift
Swift 4.2 以降をサポート
C#
.Net Framework 3.5 以降、.Net Core、.Net 5+、Mono、Unity/Mono、Unity/IL2CPP をサポート
thread safety モデル
各 class について、特に説明がない場合、その static member は thread-safe です。
各 class について、特に説明がない場合、その instance member は外部でロックされた場合 thread-safe であり、ロックされていない場合は thread-safe ではありません。
各 class について、特に説明がない場合、その object への他の呼び出しが終了した後、destructor は任意の thread から呼び出すことができ、この場合 thread-safe です。
メモリモデル
EasyAR Sense は内部で C++ の std::shared_ptr を使用して参照カウントを行いますが、参照カウントと garbage collection の間には根本的な非互換性があり、シームレスに変換することはできません。
C, C#, Java/Kotlin
手動参照カウントが必要です。保持している object の reference を解放するには dispose を使用し、既存の reference から新しい reference を作成するには clone を使用します。
特に注意が必要なのは、EasyAR Sense の callback に渡されたパラメータは callback 終了後に自動的に解放されることです。保持する必要がある場合は clone しなければなりません。自動解放の理由は、ロジックを持たない callback をサポートするためです。
EasyAR Sense に渡される callback 内で EasyAR Sense の object を使用すると循環参照が発生する可能性がある点にも注意してください。メモリリークを防ぐため、resource(ファイルや OS handle など)として手動で解放する必要があります。
C++, Objective-C, Swift
言語組み込みの参照カウントを使用します。
EasyAR Sense に渡される callback 内で EasyAR Sense の object を使用すると循環参照が発生する可能性がある点に注意してください。参照 capture、std::weak_ptr などを適切に使用してください。
文字列エンコーディング
interface で使用される文字列のエンコーディングは次のとおりです:
C, C++
UTF-8
Java, Kotlin, Objective-C, C#
UTF-16
Swift
UTF-16 または UTF-8。Swift ドキュメントを参照