Table of Contents

Konvensi API

Saat menggunakan API EasyAR Sense, Anda perlu mengikuti beberapa konvensi. Jika tidak, program dapat crash, terjadi memory leak, atau muncul perilaku runtime tidak normal lainnya.

Bahasa yang didukung

EasyAR Sense mendukung bahasa berikut:

  • C

    Mendukung C99 dan Visual C++, gcc, clang

  • C++

    Mendukung C++17 dan Visual C++, gcc, clang

    Fitur C++17 yang digunakan hanya std::optional. Jika perlu menggunakannya di lingkungan C++11, Anda dapat menggunakan optional lite, mengganti std::optional dalam file header interface dengan nonstd::optional, dan mengganti #include <optional> dengan #include "nonstd/optional.hpp"

  • Java

    Hanya didukung pada platform Android, mendukung Java SE 6 dan yang lebih baru

  • Kotlin

    Hanya didukung pada platform Android

  • Objective-C

    Hanya didukung pada platform iOS/macOS/visionOS

  • Swift

    Mendukung Swift 4.2 dan yang lebih baru

  • C#

    Mendukung .Net Framework 3.5 dan yang lebih baru, .Net Core, .Net 5+, Mono, Unity/Mono, Unity/IL2CPP

Model thread safety

Untuk setiap class, kecuali dinyatakan lain, static member-nya thread-safe.

Untuk setiap class, kecuali dinyatakan lain, instance member-nya thread-safe jika dikunci secara eksternal, dan tidak thread-safe jika tidak dikunci.

Untuk setiap class, kecuali dinyatakan lain, setelah semua pemanggilan lain terhadap object selesai, destructor-nya dapat dipanggil dari thread mana pun, dan hal ini thread-safe.

Model memori

EasyAR Sense secara internal menggunakan C++ std::shared_ptr untuk reference counting, dan terdapat ketidakcocokan mendasar antara reference counting dan garbage collection, sehingga keduanya tidak dapat dikonversi secara mulus.

  • C, C#, Java/Kotlin

    Diperlukan reference counting manual. Gunakan dispose untuk melepaskan reference ke object yang dipegang, dan gunakan clone untuk membuat reference baru dari reference yang sudah ada.

    Perlu diperhatikan secara khusus bahwa parameter yang diteruskan ke callback EasyAR Sense akan otomatis dilepas setelah callback berakhir. Jika perlu menyimpannya, Anda harus melakukan clone. Alasan pelepasan otomatis adalah untuk mendukung callback yang tidak berisi logika apa pun.

    Perlu diperhatikan bahwa penggunaan object EasyAR Sense dalam callback yang diteruskan ke EasyAR Sense dapat menyebabkan circular reference. Object tersebut perlu dilepas secara manual sebagai resource (misalnya file atau handle sistem operasi) untuk mencegah memory leak.

  • C++, Objective-C, Swift

    Menggunakan reference counting bawaan bahasa.

    Perlu diperhatikan bahwa penggunaan object EasyAR Sense dalam callback yang diteruskan ke EasyAR Sense dapat menyebabkan circular reference. Gunakan reference capture, std::weak_ptr, dan mekanisme serupa secara tepat.

Encoding string

Encoding string yang digunakan dalam interface adalah sebagai berikut:

  • C, C++

    UTF-8

  • Java, Kotlin, Objective-C, C#

    UTF-16

  • Swift

    UTF-16 atau UTF-8, lihat dokumentasi Swift