Today I was finishing up work on version 1.4 of Pouch, and one of the things I wanted to add was some basic analytics tracking, to see how often the app was getting used (basically, just a count of how many times people launch the app). Since I'm already a KISSmetrics user, I figured that would be the best way to go. Unfortunately, there was no existing Objective-C library for interacting with the KISSmetrics API that I could find...
A useful article by the creator of Tweetie on how to get better scrolling performance for UITableViews in your iOS apps. In short: just use one custom view within each UITableViewCell (instead of composing your cells of multiple subviews).
Recently I added Facebook image sharing to Glory Math 1, and it was my first experience with the Facebook iOS SDK. I used the newer Sign Sign-On feature, which briefly takes the user to the Facebook app to ask them whether your app can access their Facebook profile. The docs are good, and the whole process was pretty straightforward, but one aspect of the authentication process really annoys me: Every time my app launches again, the user must go through the authentication process with Facebook. The first time the user authenticates, it'll ask for access, but every time after that, it just tells the user that they already approved the application for access, and they just have to tap "Okay". This process seems pointless to me. So, I tried to find a way around it.
ASIHTTPRequest is a wonderful Objective-C library for simplifying web request programming in your iOS (and OS X) apps. It's my go-to library for web server communication in iPhone apps. But, it's taken me awhile to get my own system for using it within apps that communicate with a server that needs authentication. In this article, I'll show you how to create your own subclass of ASIHTTPRequest to further simplify constructing requests to your API, including logging in and out.
When I first started making iPhone apps, I wrote a lot of repetitive code to style interface elements. Certainly, getting comfortable with Interface Builder eases that pain to some degree, but IB won't allow you to take advantage of a lot of available built-in styling features for your interface elements, such as curved corners, drop shadows, and stroked borders. Additionally, you can create beautiful gradient backgrounds in code pretty easily, but the code is somewhat verbose, so it really pays off to find good ways of re-using that kind of code. Also, using a programmatic approach to your app styling can eliminate the production time associated with image-based styles (e.g. custom background images). A lot of common effects used in UIs can be realized without any images whatsoever.