Skip to content

0.7.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@thomverbeek thomverbeek released this 04 Aug 09:27
2c44cce

This release drastically alters VIPER from a unidirectional to bidirectional implementation:

  • It rearranges VIPER components to more closely model the traditional definition. View <-> Presenter <-> Interactor
  • Similarly, Presenters now talk to Routers to make decisions regarding navigation.
  • The role of PresenterModel and ViewModel is clearer - they provide state information to their respective counterparts
  • The mechanics of message passing are simplified - ViewModel and PresenterModel are only provided upon initialisation as dependencies. Consumers can use publishers or delegation to subscribe to updates.
  • AnyObject requirement forces all VIPER objects to be implemented as classes. This allows for some Objective-C runtime magic to abstract message passing mechanics.
  • Combine is removed as a dependency, which lowers the minimum OS requirements. Message passing is handled under the hood via simple closures. The need for subscriptions is removed in favour of associated objects and function variable scopes.
  • VIPER components don't need to declare Combine publishers for message passing.
  • Restored weakly-held view property on Routers.