Table of Contents

Konvensi API

Saat menggunakan API EasyAR Sense, perlu mengikuti beberapa konvensi, jika tidak dapat menyebabkan program crash, kebocoran memori, atau perilaku 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 digunakan di lingkungan C++11, dapat menggunakan optional lite, mengganti std::optional dalam file header antarmuka dengan nonstd::optional, dan mengganti #include <optional> dengan #include "nonstd/optional.hpp"

  • Java

    Hanya mendukung platform Android, mendukung Java SE 6 dan di atasnya

  • Kotlin

    Hanya mendukung platform Android

  • Objective-C

    Hanya mendukung platform iOS/macOS/visionOS

  • Swift

    Mendukung Swift 4.2 dan di atasnya

  • C#

    Mendukung .Net Framework 3.5 dan di atasnya, .Net Core, .Net 5+, Mono, Unity/Mono, Unity/IL2CPP

Model keamanan thread

Setiap kelas, jika tidak dinyatakan lain, maka anggota statisnya aman untuk thread (thread-safe).

Setiap kelas, jika tidak dinyatakan lain, maka anggota instansnya aman untuk thread (thread-safe) jika dikunci secara eksternal, dan tidak aman untuk thread jika tidak dikunci.

Setiap kelas, jika tidak dinyatakan lain, maka destruktornya dapat dipanggil dari thread mana pun setelah panggilan lain ke objek selesai, dan saat itu aman untuk thread.

Model memori

EasyAR Sense secara internal menggunakan std::shared_ptr dari C++ untuk penghitungan referensi (reference counting), dan terdapat ketidakcocokan mendasar antara penghitungan referensi dan pengumpulan sampah (garbage collection), sehingga tidak dapat dikonversi secara mulus.

  • C, C#, Java/Kotlin

    Perlu melakukan penghitungan referensi manual. Gunakan dispose untuk melepaskan referensi objek yang dipegang. Gunakan clone untuk membuat referensi baru dari satu referensi.

    Sangat penting untuk diperhatikan bahwa parameter yang diteruskan ke callback EasyAR Sense akan dilepaskan secara otomatis setelah callback selesai. Jika perlu disimpan, harus dilakukan clone. Alasan pelepasan otomatis adalah untuk mendukung penerusan callback tanpa logika apa pun.

    Perlu diperhatikan bahwa penggunaan objek EasyAR Sense dalam callback yang diteruskan ke EasyAR Sense dapat menyebabkan referensi melingkar (circular reference). Perlu diperlakukan sebagai sumber daya (misalnya file, handle sistem operasi) dan dilepaskan secara manual untuk mencegah kebocoran memori.

  • C++, Objective-C, Swift

    Menggunakan penghitungan referensi bawaan bahasa.

    Perlu diperhatikan bahwa penggunaan objek EasyAR Sense dalam callback yang diteruskan ke EasyAR Sense dapat menyebabkan referensi melingkar (circular reference). Gunakan penangkapan referensi (reference capture), std::weak_ptr, dll. dengan tepat.

Pengodean string

Pengodean string yang digunakan dalam antarmuka adalah sebagai berikut:

  • C, C++

    UTF-8

  • Java, Kotlin, Objective-C, C#

    UTF-16

  • Swift

    UTF-16 atau UTF-8, lihat Dokumentasi Swift