You say that you have only done a bit of Obj-C programming. The problem is that for small programs retain/release is much like malloc/free, but in bigger projects it becomes a life-safer. The conventions are very easy, even if you throw some CoreFoundation object in the equation.
The main difference between retain/release and malloc/free is that with retain = "I (object calling retain) need this object to stick around" and release = "I (object calling release) don't need this object anymore". Instead malloc = "create this", free = "nobody else in this process needs this". You can see yourself that while is usually trivial to determine if an object needs something it is referencing or not, doing so for the whole process everytime you try to get rid of an object is painful.
Note that now the Objective-C runtime offers garbage collection (except on the iPhone), which is of course a good step forward.
This was true a few years ago, when DRM didn't actually get in the way of legitimate customers in a major way. Now even Mr WhatIfTheyGetMe (because many of those who don't pirate don't do so because they are afraid of getting caught) starts to get pissed about these extremely obtrusive DRM systems.
I know game makers, recording labels etc have lost sales from me. I did not pirate though, I am still waiting for DRM free versions of their content. I purchased a lot of shareware and some iTunes Plus music instead.
After all I can live just as well (dare I say, better?) without playing Spore.
The shortest distance between two points is under construction. -- Noelie Alito