William Boles - A blog about iOS development in Swift and Objective-C
Resisting the Whispers of a Form‑Engine
Every iOS dev hears that whisper sooner or later: "These fields look the same…you should build a form-engine." Those who follow that whisper almost always end up with an over-abstracted mess. Here, we look at building a simple validation flow that keeps us on the right path.
Finding Hope in Custom Alerts
Alerts form the backbone of many user interactions. While there have been changes to alerts over the years, very little has changed about their appearance or our ability to customise that appearance leading to many tear-filled designer outbursts 😱. Here, we look at how to ease that pain.
Keeping Dates Local
In our day-to-day life, dates are simple and straightforward - we read them, make plans around them, and share them. Apart from the occasional missed birthday, things go smoothly. But we've been deceived - dates are anything but simple. Here, we look at how to keep our dates local and truthful.
Sneaky Date Formatters Exposing More Than You Think
DateFormatters are expensive to build, so we cache them. DateFormatters are useful, so we share that cache. DateFormatters are mutable, so we end up with hard-to-reproduce bugs. Here, we look at how to cache and share DateFormatters without the bugs that come from them being shared mutable state.
Building a Networking Layer with Operations
Operations have a reputation for being chunky, especially compared to GCD. However, once you get to know operations, you realise that they are the OOP approach to concurrency in iOS. Here, we look at how to use operations to build a networking layer by encapsulating multiple steps into one unit.
Improving my Zen with GitHub
A lot of us enjoy programming for fun. A lot ends up on GitHub. A lot of companies use GitHub for non-fun programming. A lot of us use the same computer for both types of programming. Here, we look at how to have two different GitHub accounts on the same computer to avoid accidentally seeing work.