Much of this book, particularly the later chapters, will look at leveraging the considerable power of the Xcode-integrated development environment, in order to familiarize the reader with many aspects of development that go beyond code writing, to include debugging, performance measurement and improvement, working with source control within a team, and many others.
Software development is rarely a matter of using one single program, and we will be utilizing several tools other than Xcode to get the most out of the time we spend coding, compiling, and testing our work. You might be pleased to learn that none of these tools are going to cost you any money (although like any other tool, they come at the cost of a certain amount of time to be invested in order to reach a moderate level of proficiency). You might be even more pleased to learn that we will be covering this ground step by step, and no previous knowledge is assumed.
Despite the varied backgrounds that readers of this book are likely to have, we will make some broad assumptions about the level of skill and experience you bring with you. There are also some hardware requirements, though nothing you're unlikely to have already.
To be able to comfortably follow this book, you will need to have the following:
- A reasonably high level of familiarity with the macOS/OS X operating system and its day-to-day use, including trackpad gestures (in addition to mouse clicks, obviously), the file system as accessed through the Finder, and the general features of both Apple and third-party software.
- Some basic experience of programming using an object-oriented programming language such as Swift, Objective C, or Java.
- An Apple computer running at least macOS Sierra, with Xcode 8.0 or above already installed.
- Some chapters will require an Internet connection.
There are also a number of areas in which some experience will prove useful, though not necessarily essential, before we start, which are as follows:
- Using the Terminal app, and some knowledge of basic bash operation
- An understanding of the general principles of HTTP requests and responses, including JSON data
- Some knowledge of XML and HTML will also help
If any of those are completely new to you, you might want to find a little time to familiarize yourself with them. The website that accompanies this book contains introductions to all of the topics listed here, as well as several others is http://www.grimshaw.de/macOS-book.