0.7.0
Pre-release
Pre-release
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.