Careful With “Singleton” Lookalikes (WAY TOO COMMON)

Careful With “Singleton” Lookalikes (WAY TOO COMMON)

Have you ever been told that Singleton is an anti-pattern? Well, Singletons can be ok, but if you are not careful, they aren’t just an anti-pattern. THEY CAN BE DANGEROUS!

Read More

Clean iOS Architecture pt.4: Clean Memory Management in Swift with WeakRef

Clean iOS Architecture pt.4: Clean Memory Management in Swift with WeakRef

We must be careful with `weak` properties as they can sometimes damage the design of our systems, especially when crossing module boundaries. In this video, we’d like to share with you a way to avoid retain cycles by using a `WeakRef` type, so there's no need to make your class properties `weak`.

Read More

Composing View Controllers pt.3: Lifecycle Observers in Swift

Composing View Controllers pt.3: Lifecycle Observers in Swift

In this video, you'll learn how to create your own `Swift View Controller Lifecycle Observers`. Those observers are very useful when composing and creating reusable view controllers. The solution is based on the `UIViewController Containers API` so there's no need for external frameworks, swizzling or subclassing!

Read More

Back to Basics pt.1: Objects

Back to Basics pt.1: Objects

Today we'd like to discuss the importance of the "basics" for beginners and advanced programmers. In this first video, we'll stress the concept of "Objects."

While teaching we noticed that many developers like to rush to the "cool stuff" and end up getting too attached to the semantics of acronyms or language features, and they forget the basic concepts behind them. We believe that if we don't get the basics right, we can't use our skills optimally.

Read More

S01E04: [TDD 🍅 3] Swift Closures and Recursion

S01E04: [TDD 🍅 3] Swift Closures and Recursion

We begin the third tomato by sanitizing our FlowTest class. We refactor the tests by removing duplicated code, we talk about different ways for organizing the test setup code and we showcase the factory method for the creation of the system under test. These changes will prove very valuable as the project grows.

Read More

S01E03: [TDD 🍅 2] Swift @escaping Closures and Retain Cycles

S01E03: [TDD 🍅 2] Swift @escaping Closures and Retain Cycles

In this episode we continue the development of the Flow as we start progressing to next questions. We accomplish this by providing a closure as the answer callback in the Router protocol.

We discuss about the meaning of placing the @escaping instruction in a protocol and we examine our options for dealing with retain cycles and memory management...

Read More