Any iOS developer, at some point, feels the need to make the step from basic to advanced concepts.
You can get a lot of mileage from the fundamentals of Swift and iOS development.
But working on complex projects demands a new set of tools if you want your code to be reusable and remain at the same time maintainable and testable.
If you are looking to expand your Swift knowledge into more advanced topics and understand why you would need such concepts, this article is for you.