1
Swift Realm docs提到您只需要每個線程使用let realm = try! Realm()
來初始化Realm。我想知道是否有任何性能(或其他)問題伴隨着在我的項目中使用Realm的幾個類中的每一個類中調用它。是否值得做一些能夠保持對領域對象的引用的單例類?在線程中多次初始化領域是否存在重大缺陷?
Swift Realm docs提到您只需要每個線程使用let realm = try! Realm()
來初始化Realm。我想知道是否有任何性能(或其他)問題伴隨着在我的項目中使用Realm的幾個類中的每一個類中調用它。是否值得做一些能夠保持對領域對象的引用的單例類?在線程中多次初始化領域是否存在重大缺陷?
不,沒有缺點,因爲已經有防範措施來防止這種情況發生。領域實例在內部(弱!)緩存每個線程依賴於他們的路徑,所以你不需要拿出一個自己的機制。
雖然它有助於確保至少有一個Realm實例在所有需要訪問權限的線程上活動。總的來說,如果在任何線程上仍然存在一個實例,則在另一個線程上實例化Realm會顯着更便宜,因爲可以共享某些數據。如果您使用的是GCD,請記住只保證哪個線程將使用主線程執行主隊列的任務。