What are the core architectural patterns you use in iOS (e.g., MVVM, VIPER), and how do you ensure testability in your view models or presenters?