Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Archive
- view
- SwiftUI
- UIButton
- Code
- 웹뷰
- mac
- error
- iOS16
- github
- JPA
- Git
- appstore
- rxswift
- 개발자
- darkmode
- MacOS
- Swift
- Apple
- Notification
- Realm
- IOS
- Session
- stack
- 한글
- Firebase
- Xcode
- FLUTTER
- window
- geofencing
Archives
- Today
- Total
EEYatHo 앱 깎는 이야기
SwiftUI ) Deinit 감지하기 - EEYatHo iOS 본문
반응형
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 시 하고싶은 일들~
}
// ...
}
'iOS, Swift > Tip, Bug, Swift Error' 카테고리의 다른 글
Swift ) error: the Swift tools version specification is missing a label (0) | 2024.02.29 |
---|---|
Swift ) Queried URL Schemes 용도 (LSApplicationQueriesSchemes) - EEYatHo iOS (1) | 2024.02.08 |
SwiftUI ) TCA 단점 ( with AsyncStream, cancel, cancelable ) - EEYatHo iOS (1) | 2024.02.01 |
SwiftUI ) 위아래 검은 패딩 - EEYatHo iOS (0) | 2023.10.07 |
Swift ) weak 를 못쓰게되면서.. (with Rx vs Combine) (0) | 2023.08.22 |
Comments