I always figured that the changes to the names of classes from Cocoa to CocoaTouch were done deliberately to make it difficult to port apps from the Mac. You're knowledge of the APIs transfers pretty well, so if you wrote an app for the Mac, it won't be hard to rewrite for the iPhone, but you will have to rewrite it.
Apple seem to like doing this to force developers to become familiar with a new platform. It's much the same as not providing a command line for the original Mac, hence preventing text-based programming, or indeed not allowing cross-platform dev tools to be used for apps that will be sold on the app store.
From a design perspective, I can understand why they do this. They want apps on their platform to be lovingly crafted, just as they themselves have laboured over their products. But still, it can be frustrating for devs.
It's much the same as not providing a command line for the original Mac, hence preventing text-based programming
Not true. Stephenson even talks about this in In The Beginning Was The Command Line. It was called MPW and provided a very Unix-like experience (Makefiles and so on). The rival was THINK Pascal, and then later CodeWarrior, which were IDEs.
I'm not entirely sure where you're trying to go with this. There was no command-line mode for the Mac. You couldn't take e.g. Wordstar (good grief, it's been a while since I last typed that name!) , and run it with little modification on a Mac. You would first have to write a GUI-based console for your text-only app to run in. There was no console SDK. Yes, it was possible to do, but as it would take as much work as writing the app as a proper GUI app anyhow, you might as well forget about the console.
Well, you said there was no text-based programming, whereas I remember doing it... I'm pretty sure you could run your code in the MPW shell and use STDIN and STDOUT as per any C program of the time. CodeWarrior also had this, called WASTE there.
Could you deliver that text program to the user such that they could compose it with others in a standard environment? I think that's the real point - that programmers were discouraged from falling into habits of older platforms.
I think the name changes were done to remind programmers that Cocoa and Cocoa Touch are different and you need to take that into account. Plus, it has been a long while since NS was meaningful. I do wish they had introduced namespaces into Obj-C as part of the iPhone SDK, but oh well.
I remember seeing a terminal emulator for the early Macs that allowed hooking to corporate mainframe apps. It made me very sad.
Apple seem to like doing this to force developers to become familiar with a new platform. It's much the same as not providing a command line for the original Mac, hence preventing text-based programming, or indeed not allowing cross-platform dev tools to be used for apps that will be sold on the app store.
From a design perspective, I can understand why they do this. They want apps on their platform to be lovingly crafted, just as they themselves have laboured over their products. But still, it can be frustrating for devs.