• Ios Environment Setup Summary


If you've gone through setup on the Learn OSX application, your machine has already been set up for iOS development.

The purpose of this document is to provide you with a summary of how your machine has been set up.

If you haven't run the Learn OSX application yet, you can find it here.


XCode, the Apple Development Environment, should have already been installed on your machine by you (it's very difficult to automate that). You can verify this by looking in your Applications directory and finding the program file.



Along with XCode, we installed the XCode Command Line Tools and compiler known as GCC. You can verify this by going into your terminal and typing gcc.

$ gcc
clang: error: no input files

Note: The $ connotates a command meant to be typed into your prompt. You do not copy the $ into your terminal. Your prompt is actually // ♥


Any output about no input files is fine. What you don't want to see is something like this:

$ gcc
-bash: gcc: command not found

You also might get something about accepting terms of service from Apple. If you do, go through that process.


CocoaPods is what we use to import third party code into our projects. To make sure it is installed, type pod into your terminal. You will hopefully get some help text that looks something like this:


    $ pod COMMAND

      CocoaPods, the Cocoa library package manager.


    + init       Generate a Podfile for the current directory.
    + install    Install project dependencies to Podfile.lock versions
    + ipc        Inter-process communication
    + lib        Develop pods
    + list       List pods
    + outdated   Show outdated project dependencies
    + plugins    Show available CocoaPods plugins
    + repo       Manage spec-repositories
    + search     Searches for pods
    + setup      Setup the CocoaPods environment
    + spec       Manage pod specs
    + trunk      Interact with the CocoaPods API (e.g. publishing new specs)
    + try        Try a Pod!
    + update     Update outdated project dependencies and create new Podfile.lock


    --silent     Show nothing
    --version    Show the version of the tool
    --verbose    Show more debugging information
    --no-ansi    Show output without ANSI codes
    --help       Show help banner of specified command

As long as you don't get a bash error, you are fine. Bash errors look like this:

-bash: pod: command not found

File Directory

The changes here are simple. The Learn App adds a "Development" folder to the root of your home directory. This gives you a place to organize your code.

Here are a few tips for setting up your directories:

  • When creating directories, except for directories in ~ (the home directory), always use lowercase directory names for ease of access.
  • When creating directory names it is preferable to use a "-" instead of a "_" to denote spaces (hyphen case and not snake case).
  • Keep all code in one place so you can access it easily.
  • Make sure you have another directory to keep your resources and other things which are code-related, but not actual code itself. Here you might keep your local copy of The markdown cheetsheet or other documentation.
  • Remember to build your folder structure so you can easily navigate in and out of your project directories.


Your .bash_profile is a script that runs every time you open or login to your shell. It can configure environment variables, like your PS1 (which stores your command prompt), or EDITOR (which is the command other programs will use when they need to launch your default editor).

You can also create aliases for common commands so that they are shorter to use.

And finally, you can also build functions to simplify common workflows.

The Learn App installs the Flatiron Bash Profile for you!

Within that bash profile are comments that explain each part. Make sure to read them! You can always comment sections in or out to see what they do and how they effect your prompt, shell, and environment.

Just remember: to activate a change in the dotfile, you must reload your shell. You can do that via opening a new tab or typing source .bash_profile (from the ~ directory).

You know if your bash_profile was setup correctly if your prompt has the Flatiron Love.

[20:23:45] ~
// ♥ 


Homebrew is a package manager for OSX. Not only will it help you install packages via commands like brew install wget but it will also organize the packages you install and add the appropriate locations to your path. As if that weren't already enough, Homebrew also ensures that your system configurations are up to date. Commands like brew doctor will help you gauge the health of your system and often provide suggestions for how to fix problems.

You should be able to type in: brew doctor and get output from homebrew. Warnings and errors are fine as long as you don't see:

$ brew doctor
-bash: brew: command not found


Git is the most widely used Version Control system in the world. Read about it, YOU WILL USE IT A LOT! In conjunction with GitHub, it will be used as a Version Control system for all of your projects as well as many other things you will learn. Type in: git --version

$ git --version
git version 2.3.5

Any version of git is fine; again, you just don't want to see:

$ git --version
-bash: git: command not found

Sublime Text

Sublime Text is the text editor we use at The Flatiron School. The Learn App installs Sublime Text with a package manager so you can install cool themes and useful add-ons. Make sure you take the time to set it up to your liking because you will be spending a lot of time with it! You'll see Sublime Text in your Applications directory.

Sublime Text

Sensible Defaults

Like the .bash_profile these are scripts and configuration files that work in different areas. You should read through them all to see the specifics of what they are doing. Each has a specific purpose and works for different things.

  • .gitconfig will contain the settings that you will take advantage of when employing git in your command line.
  • .gitignore is a collection of files that you want git to ignore. Some files that you don't want git to track including, but not limited to, .DS_Store and .env.

Remember to look through all of these files to see exactly what settings each contains and learn what effect they have on your computer.

Symlink stands for "Symbolic Link". A symlink is represented as a text string that is automatically interpreted by the operating system as as a path to another file or directory. In other words, a symlink is like a shortcut to another location. One will allow you to type something like desktop in bash to cd from any file directory to the desktop. It can also be used as a command. For example, you will often find yourself typing subl . to open up the current file directory in Sublime Text. This is because the text desktop is symbolically linked to the desktop path ("~/Desktop") and subl is symbolically linked to the location on your computer where Sublime Text is stored. Some symlinks will be installed by Homebrew and others will be installed by the Learn App. However, to really make your computer your own, look into creating your own!


SSH stands for "Secure Shell". It is a command interface for communicating with secure servers. SSH keys serve as a means to identify yourself to an SSH server. To set up a proper SSH Key Authentication you need a public key (like the one you got from GitHub) and a private key (which will be generated when the Learn App runs). The private key on your computer will allow you to access the Github server with the public key without having to enter a password. You can test this with:

$ ssh git@github.com
Hi aviflombaum! You've successfully authenticated, but GitHub does not provide shell access.

If you get anything else, there was a problem setting up your SSH keys.

View iOS Environment Setup Summary on Learn.co and start learning to code for free.

Related Topics

Learn at Flatiron School

All of our students learn with our custom-built, state-of-the-art online learning platform designed to connect you to other students and instructors in real time.

Our NYC programs are held in a vibrant, 20,000 square foot campus in Manhattan's Financial District. Our campus encourages colalboration and jumpstarts creativity.

Our students learn with real tools, in groups that simulate development teams. Our graduates learn how to self-teach, ask the right questions, and collaborate with others.