ThreadConfined

public protocol ThreadConfined

ThreadConfined 을(를) 준수하는 유형의 객체는 Realm에서 관리할 수 있으며, 이를 통해 스레드별 Realm 인스턴스에 바인딩됩니다. managed 객체를 스레드 간에 전달하려면 명시적으로 내보내고 가져와야 합니다.

이 프로토콜을 준수하는 객체의 managed 인스턴스는 ThreadSafeReference(to:) 생성자에 전달하여 스레드 간 전송을 위한 참고로 변환할 수 있습니다.

Realm에서 정의한 유형만 이 프로토콜을 유의미하게 준수할 수 있으며, 이를 준수하려고 시도하는 새 클래스를 정의해도 ThreadSafeReference 에서 작동하지 않습니다.

  • 객체를 managed하는 Realm이거나 객체가 관리되지 않는 경우 nil 입니다.

    관리되지 않는 객체는 스레드에 국한되지 않으며 ThreadConfined 객체가 필요한 메서드에 전달될 수 없습니다.

    선언

    Swift

    var realm: Realm? { get }
  • 객체가 유효하지 않아 더 이상 액세스할 수 없는지 여부를 나타냅니다.

    선언

    Swift

    var isInvalidated: Bool { get }
  • 객체가 동결되었는지 여부를 나타냅니다.

    동결된 객체는 소스 스레드에 국한되지 않습니다. 동결된 객체에 ThreadSafeReference 를 형성하는 것은 허용되지만 유용할 가능성은 낮습니다.

    선언

    Swift

    var isFrozen: Bool { get }
  • 이 객체의 동결된 스냅샷을 반환합니다.

    일반 Realm 라이브 객체와 달리 동결된 사본은 모든 스레드에서 읽을 수 있으며 읽은 값은 Realm에 대한 새로운 쓰기를 반영하도록 업데이트되지 않습니다. 동결된 collection은 다른 Realm collection과 마찬가지로 쿼리할 수 있습니다. 동결된 객체는 변경할 수 없으며 변경 알림을 위해 관찰할 수 없습니다.

    관리되지 않는 Realm 객체는 동결할 수 없습니다.

    경고

    Realm에서 쓰기 트랜잭션(write transaction)을 수행하는 동안 동결된 객체를 오랫동안 유지하면 Realm 파일 크기가 커질 수 있습니다. 자세한 내용은 Realm.Configuration.maximumNumberOfActiveVersions 를 참조하세요.

    선언

    Swift

    func freeze() -> Self
  • 이 객체의 라이브(변경 가능) 참고를 반환합니다. 이미 라이브 객체에 대해 호출되면 자체를 반환합니다.

    선언

    Swift

    func thaw() -> Self?

Self: ObjectBase에서 사용 가능

  • bind(_:) 확장 메서드

    지정된 속성에 대해 Binding 를 생성하여 뒤에서 자동으로 트랜잭션된 읽기 및 쓰기를 허용합니다.

    이는 Binding 을 전달해야 하는 SwiftUI 보기(예: TextField, DatePicker)의 편의 메서드입니다. SwiftUI는 바인딩에서 자동으로 읽기/쓰기를 수행합니다.

    선언

    Swift

    public func bind<V>(_ keyPath: ReferenceWritableKeyPath<Self, V>) -> Binding<V>