I briefly looked at an article about Objective-C 2.0 and I’m totally disappointed. I learned the language in 1994 and I still think that it’s a really great language and much superior to others like Java, C or C++.
One of the fun parts was memory management. Former versions of Objective-C did not have garbage collection – but they provided some support through manual reference counting. There were some basic rules you had to follow as a developer and obeying to this rules meant to call the famous release/retain methods at appropriate places to increase/decrease the reference counters of objects. There were also things like auto pooling etc. For beginners of the language this usually was a nightmare and lead to memory leaks or unpredicated behaviour (as objects were released to soon).
But on the other hand if you followed strictly the rules (which were I think three simple rules) all this reference handling stuff was actually very easy and you did not have memory leaks – everything was working fine – we developed huge applications without any problems. Even using the distributed objects (sending and calling objects over the network to other applications) worked fine (although this was a little bit more tricky).
I guess most developers are happy with the changes but I think that no garbage collection was not a weakness of Objective-C. Actually I think its a strength as you as a developer had to think about what you were doing and you had to show some discipline while programming.
With Objective-C 2.0 this is gone and you have boring and automatic garbage collection, so developers can be lazy again and don’t care about memory management anymore. That’s a sad day…