Benchmarking Swift Locking APIs

When designing concurrent code in Swift, you might wonder which API to pick among the diversity of available choices. In this article we will benchmark performance of most notable Apple locking APIs and suggest best options based on their characteristics. [Read More]

Atomic Properties in Swift

Although Swift has no language features for defining atomic properties, their lack is compensated with the diversity of locking APIs available in Apple’s frameworks. In this article let’s take a look at different ways of designing atomic properties in Swift. [Read More]

Multicast Delegate and Delegates Composition

Delegate is among the most commonly used patterns in iOS apps. Although one-to-one delegation might be suitable for the majority of cases, sometimes you need to delegate to more than one object and that is where the canonical pattern begins to falter. [Read More]

Code Injection

Code Injection in Swift is a technique of adding custom pieces of code to methods without modifying a line of code of their enclosing types. It is an alternative to inheritance, where a common behavior is extracted to a superclass, but reusable and nonintrusive. [Read More]

Core Data Stack in Swift 4

Core Data is Apple’s object graph management and persistency framework. When it comes to structured data persistence, Core Data is an obvious choice. The goal of this article is to give you an overview of the Core Data architecture as well as to provide a list of basic operations together... [Read More]

UIView Auto Layout life cycle

Auto Layout is among the most important topics when it comes to iOS development in general. It is extremely important to understand Auto Layout life cycle to save time and avoid naive mistakes. Lack of this information will sooner or later lead to UI glitches and performance issues in your... [Read More]

Reflection and Mirror in Swift

Although Swift is a statically typed language, there is a secret double life to Swift’s type system at runtime that paves the way to some dynamism. This allows to look at the types and the methods that we defined in our code and build higher abstractions on top of that.... [Read More]

Mediator Pattern Case Study

Programmers encounter same problems over and over again. The common solution to such problems, that is generic and reusable enough to be used millions of times, is called a design pattern. Lets have a closer look at a mediator pattern that is often unfairly left unnoticed. [Read More]

Notifications: pattern or anti-pattern?

Notifications are well-known communication pattern used in one or another way almost in every program. Standard Cocoa frameworks widely utilize notifications to communicate with their clients. Does it necessary mean that its a good technique? Lets clear up the misconceptions and answer the question: are the notifications considered to be... [Read More]

How to upgrade your iOS development skills

In this article we will go through the fundamental areas that every iOS developer must know. Studying them will help you: Build a solid foundation of platform-independent skills that will allow you to easily study iOS as well as enter any other software development area. Improve problem-solving ability which is... [Read More]