ThreadConfined

public protocol ThreadConfined

符合ThreadConfined的类型的对象可以由 Realm 管理,这将使它们绑定到线程特定的Realm实例。 托管对象必须显式导出和导入才能在线程之间传递。

符合此协议的对象的托管实例可以传递给ThreadSafeReference(to:)构造函数,转换为线程安全的引用,以便在线程之间传输。

请注意,只有 Realm 定义的类型才能有意义地符合此协议,并且定义尝试符合此协议的新类不会使它们与ThreadSafeReference一起使用。

  • 托管对象的 Realm,如果对象为非托管对象,则为nil

    非托管对象不仅限于线程,也不能传递给需要ThreadConfined对象的方法。

    声明

    Swift

    var realm: Realm? { get }
  • 指示对象是否因现已无效而无法再访问。

    声明

    Swift

    var isInvalidated: Bool { get }
  • 指示对象是否已冻结。

    冻结对象不限于其源线程。 允许为冻结对象形成ThreadSafeReference ,但不太可能有用。

    声明

    Swift

    var isFrozen: Bool { get }
  • 返回此对象的冻结快照。

    与普通 Realm 对象不同,冻结副本可以从任何线程读取,并且读取的值永远不会更新以反映对 Realm 的新写入。可以像查询任何其他 Realm collection一样查询冻结collection。冻结对象无法更改,也无法观察到变更通知。

    非托管 Realm 对象无法被冻结。

    警告

    在 Realm 上执行写事务(write transaction)时长时间持有冻结对象可能会导致 Realm 文件变大。有关更多信息,请参阅Realm.Configuration.maximumNumberOfActiveVersions

    声明

    Swift

    func freeze() -> Self
  • 返回此对象的实时(可变)引用。 如果在已经存在的对象上调用,则会返回 self。

    声明

    Swift

    func thaw() -> Self?

适用于以下位置: SelfProjectionObservable

  • bind(_:) 扩展方法

    为给定属性创建Binding ,允许在幕后自动进行事务处理读取和写入。

    对于需要传入Binding的 SwiftUI 视图(例如,TextField、DatePicker),这是一种便捷方法。 SwiftUI 将自动从绑定中读取/写入。

    声明

    Swift

    @MainActor
    public func bind<V>(_ keyPath: ReferenceWritableKeyPath<Self, V>) -> Binding<V> where V : _Persistable, V : Equatable

适用于以下位置: SelfObjectBase

  • bind(_:) 扩展方法

    为给定属性创建Binding ,允许在幕后自动进行事务处理读取和写入。

    对于需要传入Binding的 SwiftUI 视图(例如,TextField、DatePicker),这是一种便捷方法。 SwiftUI 将自动从绑定中读取/写入。

    声明

    Swift

    @MainActor
    public func bind<V>(_ keyPath: ReferenceWritableKeyPath<Self, V>) -> Binding<V> where V : _Persistable, V : Equatable