I’m a loyal user of iPhone. I’ve been using it since its first version and now I’m on 4S. Though I’m staying in iOS camp and don’t have any intention of moving, I occasionally get the urge to test out and see what’s out there. That’s the reason why I convinced myself to own and play with Dell Streak 5″ phone and Google Nexus S. They are both smart smart-phones. But it’s hard to pick their pros and cons by simply “playing” with it. You’ve got to use it. Daily. For everything including surfing, speed dialing, social-networking and games. Everything. And that’s something that I didn’t get a chance to do until last summer when I was traveling and in need of an unlocked phone. I could make my iPhone work (don’t ask me how) but thought I’d give an Android phone a real kick.
I set out a couple of weeks ago to port the Killer Deals
application from the iPhone 2.2.1 SDK to 3.0. “No problem”, I thought; the
application doesn’t veer far from the standard APIs and controls, and it is a
relatively straightforward application, implementation-wise.
As I was making my updates (some minor method and property
name changes here and there), I stumbled upon a show stopper: The NSXMLParser
was no longer parsing my XML data. After scratching my head for a few hours, I
finally figured out the problem.
Unfortunately, Apple iPhone SDK (as of this writing, the latest is iPhone 2.2.1) doesn’t come with a built-in JSON parser. But I found out a good one called json-framework. It is both a generator and a parser. As a generator, json-framework can create JSON data from an NSDictionary. As a parser, you can pass to json-framework an NSString that consists of JSON data and it will return a NSDictionary that encapsulates the parsed data.
There are times when building an iPhone application that you
need to inform other parts of the program to do something, without regard to
what or where those parts are. The NSNotificationCenter (aka “notification
center”) is the way to go in these cases. Using notifications supports ‘loose
coupling’, which is a good thing in software design.
A notification center object provides a mechanism for
broadcasting information (“notifications”) within a task. An
NSNotificationCenter object is basically a notification dispatch table. For
those familiar with Windows programming, this pattern is similar to the Windows
Message Loop architecture.