It's important to know what you're making. In this video, see how to lay out a plan for what you develop. Thinking about a set of development goals is different when you are working with code that you intend to reuse many times over, so you understand the nuance of creating a product that is aimed at assisting a developer, but ultimately is made to benefit the user across multiple applications.
- [Narrator] So now let's talk a little bit about what we hope to accomplish throughout this course. Think about a tool or a third party library that you've used to create iOS applications, like AFNetworking or Alamo Fire. Do you think that the developer or the team of developers that worked on that tool were focused on your experience rather than the user? It's safe to assume that if you enjoy using your tool, it's more likely you're going to create a good user experience for the end user in your application. Let's take an example here. Let's assume that you're a freelancer and you have three separate clients that need applications. The first client says to you, I want a camera that can simply take photos.
The second client says, I need to be able to detect QR codes and barcodes. The third client says, I need to make real-time image recognition app. If you look at all three of these client requests, it's very likely that you can find a common denominator for all three of them. All of them require a camera. From here, you have two ways that you can proceed. The first option is to write three separate applications and to re-write a bunch of AVFoundation code that handles each specific use case. This can be time consuming. With this course, you'll be able to take another option, which allows you to write a camera framework that solves all three use cases and you only have to write your AVFoundation code one time.
I've been in this situation a number of times, where I've had multiple clients asking me to make ultimately the same application over and over again. By the end of this course, you'll see just how easy it is to create a re-usable framework and avoid writing the same code over and over again. Let's look at this quote from Andrew Hunt. Tools amplify your talent. The better your tools and the better you know how to use them, the more productive you can be. This means that yes, we are going to be creating a tool that you enjoy using and enjoy developing. Let's go back to those three client requests we looked at earlier.
If you look at this in terms of creating a tool, instead of three separate applications, the first client request simply turns into, I need to make a tool that can capture still photos to return via a delegate. The second client request turns into the need to make a tool that can return QR code and barcode content via a delegate. And finally, third client request turns into making a tool that can stream still images from video frames via a delegate. There's continuity in all of these and I'll show you how to handle all three client requests with one framework.
Along the way, he explains the differences and nuances between writing code for an application and for a reusable framework, as well as some of the fundamentals of AVFoundation, one of the core camera frameworks in iOS. David also shows how to refactor your code, understand Swift access control, develop an interface, and handle memory leaks, so your framework is ready to share with other developers.
- Creating your first build
- Making the camera work
- Creating a framework delegate
- Adding media
- Capturing images
- Correcting orientation
- Versioning and tagging releases in Git