iOS, Swift/Tip, Bug, Swift Error
SwiftUI ) Deinit 감지하기 - EEYatHo iOS
EEYatHo
2024. 2. 1. 18:39
SwiftUI 에는 뷰의 생명주기로 onAppear과 onDisappear만 제공한다.
나는 deinit을 감지하고 싶다..
하지만 Struct는 deinit을 오버라이드 할 수 없는걸?
class의 도움을 받는다.
DeinitDetector
/// 구조체의 deinit을 확인하기위한 class
final class DeinitDetector<T> {
deinit {
var typeString = "\(type(of: T.self))" /// "SomeView.Type"
typeString.removeLast(5) /// "SomeView"
print("🖐🖐🖐 \(typeString): \(#function)") /// "🖐🖐🖐 NotificationView: deinit"
deinitCompletion?()
}
private var deinitCompletion: (() -> Void)?
public init(_ deinitCompletion: (() -> Void)? = nil) {
self.deinitCompletion = deinitCompletion
}
public func setCompletion(_ deinitCompletion: (() -> Void)?) {
self.deinitCompletion = deinitCompletion
}
}
사용법
import SwiftUI
struct SomeView: View {
private let deinitDetector = DeinitDetector<Self>() {
// deinit 시 하고싶은 일들~
}
// ...
}
반응형