На самом деле, это, как правило, не рекомендуется развешивать на Realm
случаях вообще, если она может быть оказана помощь. :)
Как только Realm()
вызывается в определенном потоке, этот экземпляр будет внутренне кэширован Realm, и тот же экземпляр будет возвращен при последующих вызовах Realm()
. В результате нет ощутимого выигрыша в производительности от зависания на экземпляре Realm как члена класса, подобного этому.
Если вы выполняете какие-либо операции с резьбой в своем приложении, вам нужно быть осторожным с хранением ссылок Realm
, так как вызов self.realm
в фоновом потоке инициирует исключение.
Если вы имеете дело только с областью по умолчанию, то лучше всего просто позвонить let realm = try! Realm()
в то время, когда вы действительно в ней нуждаетесь.
Если вы имеете дело с различными типами областей, которые полагаются на конкретные экземпляры Configuration
, тогда рекомендуется хранить их как глобальные константы. Realm Configuration
объекты потокобезопасны, поэтому их можно передать в фоновый поток, чтобы создать Realm
экземпляров там без проблем.
Это действительно интересно, спасибо. Так лучше ли не использовать 'Realm()' как свойство класса? Я делаю это только из удобства. Должен ли я сбрасывать или освобождать экземпляры «Realm()», когда я их использую (например, в 'deinit' в классе Swift)? –
Мое удовольствие! Да, лучше не хранить его как свойство класса; просто позвоните 'let realm = try! Realm() 'всякий раз, когда вам это нужно. Отбрасывание освобождения от него не приведет к немедленному действию, но вы можете помещать вызовы 'Realm()' внутри блоков '@ autoreleaspool', чтобы заставить систему освободить их, когда вы закончите. – TiM