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
disposeuntuk melepaskan referensi objek yang dipegang. Gunakancloneuntuk 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