Whether we like it or not, iOS (and MacOS X) development has significantly evolved during the past years. A big part of that is how we write code, reuse it and rely on open source to build great products.

So I want to recommend some libraries and frameworks that make developers’ lives easier …

Reusing code

The days when a developer reinvents the wheel over and over again should be gone (at least for us iOS developers). One should always know what’s available on the internet before starting to do anything (and I’m referring to non-trivial tasks).

Why? You can find a good open source project that does exactly what you need. Even if you don’t, people who tried to do similar things definitely encountered issues you might encounter. Some of them found good solutions, other just listed bottlenecks, concerns. Adding this info to the one you started from determines some boundaries of the potential solution. This global experience is priceless.

Global delegation

We used to have each development team having to build a networking system, an image caching system or the classic logging component. Now, we should be relying on other people who are specialists in a certain area.

For example: most of the people no longer worry about networking, because Mattt Thompson does 🙂 (with the great AFNetworking). We just need to keep up with him and guys like him, bringing in our own contribution to the community. It’s only decent to take and give back in a balanced way.

The great advantage of this is developers can focus on their apps’ business challenges, on a great architecture, as solutions for the most common problems are already out there.

Note: Apple has recently added a submission phase where the developers must say if they used 3rd party content, including open source. A good practice seems to be (and a fair one to those who spend their time in doing open source) to list the open sources used together with their VTAcknowledgementsViewController is a great tool for that.

We build better apps … faster.

Cocoapods, mother of all libraries



This awesome tool has made it very easy for developers to experiment, add, remove and update libraries and frameworks. Not to mention the 2700+ and growing repos that can be included in a project with a single line of text. Plus documentation. See a great article that will explain how Cocoapods works.

You no longer have to read a n-page document on how to hook a library to a project, fix warnings and stuff, the pods come out of the box.

Libraries are like steaks. We like them well done



Now that we have so many libraries and frameworks available, a new question arises: which libraries to use?

This is still subject to subjectivism, but there are definitely some solutions out there that are universally accepted by the iOS community.

At last, I want to briefly list the most common ones, projects from each and every one of us could and should learn.

The libraries and frameworks (finally)

Objective-C

Swift

Development tools awesome-swift – a huge list of Swift resources (libraries and more) Functional Reactive Programming ReactiveCocoa: Although ReactiveCocoa was started as an Objective-C framework, as of version 3.0, all major feature development is concentrated on the Swift API. RxSwift Unit Testing Quick Xcode plugins Build Time Analyzer – break down of Swift build times Swift Refactorator – by default, Xcode does not support Refactoring for Swift. This plugin adds the support Swift Code Snippets Communication and data handling Networking Alamofire Image Caching Kingfisher JSON SwiftyJSON UI SnapKit – the Swift version of Masonry (same team) Charts

Happy coding!