Skip to content

Instantly share code, notes, and snippets.

@bmorton
Created September 8, 2011 18:42
Show Gist options
  • Save bmorton/1204251 to your computer and use it in GitHub Desktop.
Save bmorton/1204251 to your computer and use it in GitHub Desktop.
4 iPhone Libraries

4 iPhone libraries to make your first iPhone app experience better

I've dabbled in countless iPhone examples, demo apps, and personal hacks. I've watched almost every WWDC session and iTunes U video about iOS. I constantly download apps from the App Store when I hear they do something cool or if they visually impress me. I feed off the libraries listed in others' legal sections listing out their licenses and attributing credit where credit is due.

And now I'm working on my first official, commercially-backed app. And it's not easy. Luckily, I've got somewhere to start. Plenty of people have solved the problems I've encountered. I can't even begin to thank them enough, but this is my attempt to give them the credit they deserve and spread the word on some great open source projects.

ASIHTTPRequest from All-Seeing Interactive

I've found that communicating with an API in an iPhone app requires a bit more than Apple provides in its base frameworks. ASIHTTPRequest fills that gap and provides a wrapper around the CFNetwork API to make this a breeze. It handles asynchronously GETing and POSTing data, provides easy access to HTTP headers, manages progress indicators and queues, and supports credentials of all types. The library has classes for Amazon's S3 service as well as Rackspace Cloud Files. The documentation is superb, complete with setup instructions and examples aplenty.

Website: http://allseeing-i.com/ASIHTTPRequest/ Source Code: https://github.com/pokeb/asi-http-request License: Requires attribution and can be redistributed with or without modification in source or binary forms. Who uses it: http://allseeing-i.com/ASIHTTPRequest/Who-is-using-it

JSONKit by John Engelhart

I hate XML and, while native to iOS, binary plists can be a pain in the ass too. JSON is plain and simple and with JSONKit it's lightning fast. I haven't personally done any benchmarking, but the author claims (and it seems well supported) that JSONKit is even faster than using a native binary plist. Frankly, I'm happy I get to work with JSON as it's something all my application endpoints already support. XML parsing using NSXMLParser is not a pleasant experience. JSONKit leaves you with a mix of NSArray and NSDictionary and calls it a day.

Source Code: https://github.com/johnezang/JSONKit License: dual licensed under either the terms of the BSD License, or alternatively under the terms of the Apache License, Version 2.0

EGOTableViewPullRefresh by enormego

Most iPhone apps that are refreshing data are using some sort of 'Pull to Refresh' mechanic these days. Pioneered by atebits in Tweetie 2, enormego has created an easy to use control for making it work in your app as well. You've seen this -- it's nothing new and you should be using it.

Website: http://developers.enormego.com Source Code: https://github.com/enormego/EGOTableViewPullRefresh License: No license provided

SSToolkit by Sam Soffes

I just stumbled upon this one recently, but I'm impressed with the examples and documentation on this full-featured collection of controls, views, and helpers. As the website claims, the aim is to solve common problems that all iOS developers face. Views in the collection include a badge table view cell, collection view, gradient view, HUD view, indicator label, line view, loading view, and pie progress view. A number of other helpful and well-designed controls are available as well. Don't miss the sample app, you'll be impressed. Very well documented and extremely easy to get setup.

Website: http://sstoolk.it/ Source Code: https://github.com/samsoffes/sstoolkit License: No restrictions, include copyright notices, give credit

Bonus links

I haven't had a chance to dig into these yet, but I have them on my list to invest some time into exploring. I recommend you do too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment