Вы можете использовать словарь областей для потоков, что-то вроде этого:
class RealmWrapper {
var realm: Realm? {
return realmsPool.realmForThread(Thread.current)
}
var realmsPool = RealmsPool()
}
class RealmsPool {
var realms = [Thread: Realm]()
func realmForThread(_ t: Thread) -> Realm? {
if let realm = realms[t] {
return realm
}
do {
let newRealm = try Realm(configuration: config)
self.realms[t] = newRealm
return newRealm
} catch {
fatalError("\(error)")
}
}
}
lsof может показать много вещей, помимо файловых дескрипторов, но большая часть того, что, вероятно, раздувает ваш счет, - это загруженные фреймворки и библиотеки для приложения. Вы можете посмотреть на столбец «FD», чтобы увидеть, является ли строка дескриптором файла - в этом случае это число, возможно, за которым следует буква, обозначающая режим, - или что-то еще (см. Описание столбца FD в lsof man page для полного списка).
Если вам просто нужно приблизительное приближение, добавьте 'grep -v "txt", прежде чем ваш wc приблизит вас к точному значению. Если вам нужно точное значение, вам, вероятно, нужно собрать регулярное выражение для точной подачи вывода через эти файлеры по столбцу FD.