In-Depth Look at Dependency Injection in Swift

Dependency injection is a broad technique which can be implemented differently. In this article let’s learn the core principles of dependency injection and implement commonly used patterns such as dependency injection container, service locator and ambient context. [Read More]

How to Save Images and Videos to Core Data Efficiently

Core Data has been in iOS and macOS going back as far as anyone can recall. Nonetheless, there is no widely adopted strategy of storing images and videos in Core Data. In this article let’s implement and benchmark each of the most popular persistence strategies and suggest the most efficient... [Read More]

The Art of Commenting in Swift

Comments are integral part of every project’s code base. Their quality is equally important as that of the code. Writing excellent comments is way easier than the code, and can be mastered by studying several best practices. Even if you’ve never written a single comment before, you can get off... [Read More]

The Power of Namespacing in Swift

Namespacing is a powerful feature that improves code structure. Although being limited in Swift, it can be compensated by the use of nested types. Let’s take a look at how namespacing works in Swift by default and how it can be simulated. [Read More]

Eliminating Degenerate View Controller States

The concept of object state is so fundamental that anyone hardly thinks of its definition. In present article let’s define what is an object state, which states are called degenerate; how they can be identified and avoided. [Read More]

Missing Guide on Swift Code Style

When joining a new project or reading an open source code, you must have noticed that some projects are uniformly organized and well-structured, while others are messy and tangled? If we summarize the factors that yields such effect over the code base, we come across the notion of code convention.... [Read More]

Data-Driven Table Views

The standard approach to managing and creating table views has a number of flaws: repeated boilerplate code, tangled flow of control, violation of dependency inversion principle. In this article let’s address these issues and design a data-driven, reusable and declarative table view component. [Read More]

Static and Dynamic Libraries and Frameworks in iOS

When developing iOS apps you rarely implement everything from the ground-up, because operating system as well as open source community offers large amount of functionality ready-to-use. Such pieces of functionality are usually packed in a distributable form known as a library. In this article let’s explore static and dynamic libraries... [Read More]

Understanding Xcode Build System

Every Swift program undergoes a number of transformations before it can be run on a real device. This process is usually handled by an Xcode Build System. In this article we’ll take a look at each part of Xcode Build System. [Read More]