Skip to content

Instantly share code, notes, and snippets.

@kangddong
Created June 10, 2025 09:31
Show Gist options
  • Save kangddong/a6b47b9b7d9972e1b27a51f079b6b73e to your computer and use it in GitHub Desktop.
Save kangddong/a6b47b9b7d9972e1b27a51f079b6b73e to your computer and use it in GitHub Desktop.
Auto Observation Tracking
@Observable class UnreadMessageModel {
var showStatus: Bool
var statusText: String
init(showStatus: Bool, statusText: String) {
self.showStatus = showStatus
self.statusText = statusText
}
}
class MessageListViewController: UIViewController {
var unreadMessageModel: UnreadMessageModel = .init(showStatus: false, statusText: "zero")
var statusLabel: UILabel = .init(frame: .init(x: 200, y: 200, width: 300, height: 100))
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(statusLabel)
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
Task {
print(#function, "sleep for 3 seconds")
try await Task.sleep(for: .seconds(3))
print(#function, "awake !")
unreadMessageModel.showStatus = true
unreadMessageModel.statusText = "some"
}
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
print(#function)
statusLabel.alpha = unreadMessageModel.showStatus ? 1.0 : 0.0
statusLabel.text = unreadMessageModel.statusText
}
}
@kangddong
Copy link
Author

콘솔 출력

viewWillLayoutSubviews()
viewDidAppear(_:) sleep for 3 seconds
viewDidAppear(_:) awake !
viewWillLayoutSubviews()

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment