Injecting unique, mutable and persistent property values
Update: The original approach and sample code in this post have been modified slightly — instead of every Injected instance defining its own storage for injected traits, the Injectable struct instead defines global storage for all Injected instances. This is to allow let / constant struct instances to be injected with a stored trait without . . .
While I would guess that fewer iOS developers are concerned with Dependency Injection than say, Java developers, the concept has gained more steam on the platform as the practice of unit and integration testing has increased.
In short, Dependency Injection (or DI) consists of:
- Making your structs or classes depend on abstract types or . . .
If you've been on a team developing iOS apps before, you've probably been involved in a discussion or outright debate about how to handle styling, or the visual appearance of the app. Here, roughly, are the three sides of that debate:
1. We should style everything directly in storyboards / Interface Builder
It's easy to do, saves . . .
When Apple released their new Apple TV and tvOS last year, the initial documentation said that apps for for the new platform could require a game controller to play. Such apps would only appear in the store and be downloadable for users who had connected a game controller. This seemed like a great implementation since it would protect users . . .
Let me start off by saying this: it's 2016, we live in a time of software and service consolidations and unprecedented contextual awareness, and yet if I want to keep up with a friend or family member, I'm still having to do it in a dozen places: text messages, Slack, Twitter, e-mail (multiple accounts), Facebook, Instagram, LinkedIn, . . .
The Current State of Size Classes
Apple introduced size classes in iOS 8, which provide a broad description of horizontal and vertical screen space. These broad descriptions currently only include "Regular" or "Compact" options. The great thing about size classes is that they allow developers to create different versions . . .
During my speculation last year about the new Apple TV that was soon to be announced and released, I was most excited about imagining a possible new paradigm for discovering and interacting with apps on the platform. At the time, I called it "apps as channels", and here is how it would work:
Unlike the typical iOS / tvOS / watchOS . . .