5/28/2025
1. Use SnapKit for Auto Layout, support Dynamic Type and Safe Area. 2. Implement UI programmatically, avoid Storyboards/XIBs. 3. UI components should not directly access models, follow OOP/MVC/MVVM. 4. Pass events via closures with 'self' as parameter.
#selector(buttonTapped), for: .touchUpInside)
}
private func setupUI() {
// setup UI
}
@objc private func buttonTapped() {
didTapButton?(self)
}
}
```