Our plan for this blog is to use it for informing our audience about new releases and product decisions, but also to share interesting tidbits with other developers of iOS apps.
First post falling into the latter category is about third party libraries and tools we used for the development of SettleApp. Our work would be much harder without the help of:
We cannot imagine making any app without CocoaPods. It's a dependency manager similar to Composer for PHP or npm for Node.js. Instead of fumbling around with libraries and following specific instructions how to integrate them in your project, you can define what you want to use in a text file and let CocoaPods to do the hard work with a single command. Just remember to open .xcworkspace instead of .xcodeproj from now on.
There are many ways you can choose how to talk to the database. Someone could prefer to write SQL queries manually and use a lightweight wrapper around SQLite like FMDB. Someone else could like to be cut off from database queries completely and use a robust solution in form of Core Data.
Around the beginning of the development of SettleApp, Marco Arment released FCModel. It stands somewhere in the middle between the two extremes described in the previous paragraph. It lets you write your own SQL queries, but it also makes it easy for individual records to represent themselves as objects. It looked like something we'd find useful, so we decided to go with it.
Despite the young age of the library, it proved to be pretty solid and effective. We contributed a bugfix to FCModel early on.
Although SettleApp does not have its sync service yet, it needs to communicate over network in order to convert GPS coordinates of entered transactions into human-readable addresses. AFNetworking is the right tool for this job - it provides much needed high-level abstraction to system APIs.
If you want to access user's contacts, iOS gives you only a procedural way to deal with things. There's no object-oriented API. RHAddressBook steps in the exact form we needed. It provides natural object-oriented API that makes contacts integration much easier. SettleApp uses it to autocomplete user's contacts while creating a new transaction and also to show profile photos in various places in the app.
Objective-Clean ensures unified coding style across your whole code base. It consists of two parts – a survey-like wizard which generates settings file with your preferred coding style, and a Mac app which assists you with the integration of Objective-Clean in your Xcode project.
You can choose whether coding style violations should show up as warnings or errors when you compile your app in Xcode.
TestFlight simplifies recruitment of betatesters and distribution of test builds. It automatically gathers UDIDs so testers don't have to connect their device to iTunes and send this identifier to you manually.
In case we didn't catch an app-crashing bug in our extensive testing, we will find about it thanks to Crashlytics and, of course, fix it as soon as possible.