Please log in to watch this conference skillscast.
UIKit is an extremely powerful framework that has enabled developers to build sophisticated apps throughout the last couple of years. However, UIKit's architecture has not kept up with the changes in the iOS developer community, which are mostly driven by the introduction of Swift. Swift developers tend to favor a declarative programming style, UIKit requires the opposite. UIKit mostly works on delegates and callback blocks that provide data to the framework and influence what is rendered on the screen. Forcing our Swift code into this architecture often results in code that is difficult to understand & maintain. Further, UIKit makes it unfortunately easy to write bad code. What if we could turn this inside out? What if the view layer was simply a mapping of our data layer, not requiring delegation or callbacks?
This talk will explore the benefits of a declarative view layer and discuss how UIKit can be used in a somewhat declarative manner today:
- Benefits of a declarative view layer
- Making UIKit components more declarative: strategies and practical examples
- The Future: Can we take this approach further? What are the risks? Can we expect Apple to release a new UI framework?
The talk will discuss practical examples as used in an iOS app with a large codebase. The goal is to make working with UIKit easier today and to look into ways into making further improvements in future.
The Call for Papers is now open for iOSCon2017! Submit your talk for the chance to join a stellar line-up of experts on stage. Find out more.
YOU MAY ALSO LIKE:
- Modern development with Java (in London on 26th - 28th June 2017)
- F# eXchange 2018 (in London on 5th - 6th April 2018)
Turning UIKit inside out
Benjamin Encz is an Engineer at PlanGrid in San Francisco. He has worked in the Apple ecosystem since 2011 on a variety of projects, ranging from enterprise software to mobile games. He is the creator of multiple Swift open source libraries such as `ReSwift` and `Validated`. He enjoys exploring new ways of making software more reliable and programming more enjoyable.