Я попытался создать realm instance
со своим собственным классом потока и хочу использовать его все время в этом потоке, но когда я обращаюсь к нему во второй раз, он обычно падает на Incorrect Thread
и редко - без сбоев.
final class RealmThreadSafe: Thread {
typealias Block = () -> Void
static let instance = RealmThreadSafe()
private(set) var realm: Realm!
private(set) var queue = [Block]()
init(start: Bool = true, queue: [Block]? = nil) {
super.init()
if let queue = queue {
for block in queue {
enqueue(block: block)
}
}
if start { self.start() }
name = "RealmThreadSafe"
}
override func main() {
if realm == nil { realm = try! Realm() }
while true {
if isCancelled { return }
if queue.count > 0 {
let block = queue.removeFirst()
block()
}
}
}
func enqueue(block: @escaping Block) {
queue.append(block)
}
}
Есть идеи для этого?