iOS Projects

We are going to describe the most essential tools that we usually use on our iOS projects.

Dependency management

There are two main dependency management tools in iOS: cocoapods and Carthage. Here at CodigoDelSur we mostly use cocoapods. Using cocoapods, the dependencies are listed in a text file named Podfile. To initialize the project you just need to go to the Xcode project folder and run on a terminal the command $ pod init, this will create the podfile setup. Once the project has the podfile with the dependency libraries listed inside you can install them by typing the command $ pod intall. After the command finishes you can open the generated workspace to start coding.

Distribution tools

For distribute our app to our clients and test teams we use the next platforms:

Code Style

Objective-C Code Style

On what concerns about naming classes, variables and methods we follow the Apple's Coding Guidelines for Cocoa. Regarding code style we have created an uncrustify configuration file to automatically apply our code style. On this link you can access to it. Here you can see some guides that we based from:

Swift Code Style

Commenting code

When commenting our code we like to comments our header's using the HeaderDoc notation. Usually we use the /** - */ notation to start a documentation block. HeaderDoc works with a series of tags. These tags can be grouped into two categories: Top-level tags describe the type of declaration that and Second-Level Tags that adds additional information about the declaration. Our preferred tags are:

Top-Level Tags
Second-Level Tags

By using this notation, you can build easily html documentation using tools like jazzy, Doxygen and HeaderDoc. On this link you can check an interesting article describing those tools.

Also we use the pragma mark directive in all of our classes. The pragma mark directive helps to organize the methods of a class making the code more clean and easy to read. It help us to separate methods and group them by delegates implementations, IBAction, etc.

Libraries

Here is the list of our most used iOS libraries:

Other nice libraries

On the links below you can find really complete list of iOS libraries: