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?
-
bind(_:
확장 메서드) 지정된 속성에 대해
Binding
를 생성하여 뒤에서 자동으로 트랜잭션된 읽기 및 쓰기를 허용합니다.이는
Binding
을 전달해야 하는 SwiftUI 보기(예: TextField, DatePicker)의 편의 메서드입니다. SwiftUI는 바인딩에서 자동으로 읽기/쓰기를 수행합니다.선언
Swift
@MainActor public func bind<V>(_ keyPath: ReferenceWritableKeyPath<Self, V>) -> Binding<V> where V : _Persistable, V : Equatable
-
bind(_:
확장 메서드) 지정된 속성에 대해
Binding
를 생성하여 뒤에서 자동으로 트랜잭션된 읽기 및 쓰기를 허용합니다.이는
Binding
을 전달해야 하는 SwiftUI 보기(예: TextField, DatePicker)의 편의 메서드입니다. SwiftUI는 바인딩에서 자동으로 읽기/쓰기를 수행합니다.선언
Swift
@MainActor public func bind<V>(_ keyPath: ReferenceWritableKeyPath<Self, V>) -> Binding<V> where V : _Persistable, V : Equatable