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