
Most of the time, ARC just works and we don't have to think about it. However, the system is not perfect and if you aren't careful there are some pitfalls you can fall into. The main of which is retain cycles.
Now that we have seen how to solve retain cycles between class values, there is also a final and very subtle area in which we must handle memory management carefully; closures, in certain circumstances. In this section, we will look into this carefully
There are a number of task and concurrency management technologies in the Cocoa ecosystem. What are they, what are their characteristics?
In the previous section we introduced a lot about Dispatch, and its queue types. In this section we will focus in on serial queues, which are really the most powerful type of Dispatch queue
Serial queues are Dispatch's more powerful feature, however there are a number of additional features this library provides that you will be able to use often
Adding third-party libraries to your projects, and maintaining them long-term is not a simple task, and especially if you are relatively new to Xcode and its build system. Fortunately, there are a number of tools available that you can use
The third-party Cocoa developer community is large nowadays and there are a huge number of libraries. How do you get started discovering libraries, and choosing high quality solutions?
You will soon be ready to start writing large and complex application in Swift. Therefore, it's time to start considering unit testing your Swift code to ensure your applications are maintainable long term. We'll cover the XCTest framework; understanding, creating and navigating test bundles as well as writing and executing unit tests.
Please find the video demo of the text section in the support files
Once we have adopted Sequence, how can we do so with Collection? What is the difference?
What is the benefit of adopting these collection protocols when appropriate?
What is are the Operations APIs? How to they differ from Dispatch? When is it appropriate to use either API?
What are operation dependencies, and how is this feature a key distinction between operations and Dispatch? Dispatch has no concept of dependencies, but operations can use these to compose operations into complex composed hierarchies.
What are protocol extensions, and how to they provide a better solution than object-oriented inheritance?
Now that we understand what protocol extensions are, what more can we do with them? What can we learn about how the Swift Standard Library actually works?
Swift is a general-purpose, multi-paradigm, compiled programming language developed by Apple Inc. for iOS, macOS, watchOS, tvOS, and Linux.
This course takes you deep into the Swift language. It aims to take you beyond the fluency you need for everyday Swift development, and towards becoming a true master and understand how the language works at a deep level.
You will learn Swift development, mostly using Xcode on Apple platforms, along with the ability to port your knowledge to Ubuntu Linux. You will learn stylish tricks to write elegant, professional and powerful Swift code.
With this Swift course, you will have a working understanding of how the Objective-C heritage of Apple’s platforms shapes many of its APIs. This is essential knowledge to take you past from an intermediate level into true mastery.
By the end of this course, you will be working heavily with Xcode, and will be ready to tackle graphical user interface development on macOS, iOS, watchOS and tvOS. Finally, you will be ready to build your own Swift applications with ease
About the Author
Jonathan Crooke has been a professional developer for Apple platforms since 2010, and has shipped successful apps with user-bases in the millions, working for companies such as SoundCloud, Zalando, Memrise, and EyeEm. He has worked on the iPhone, iPad, Apple Watch and MacOS, and has a number of popular libraries available on GitHub. With a previous career in teaching, Jonathan has considerable experience putting himself in the shoes of the learner, and communicates clearly without excessive use of jargon.