NSClassFromString() returns the class that was registered at run time for the given name. NSBundle classNamed: returns the class with the given name inside the package, which may not have been loaded yet (this means that it will load the kit if necessary).
But in a different way: NSBundle probably does not know about all the classes loaded into the runtime of your application (although if it is your main package, it probably knows about most of your classes). Conversely, the runtime of the application will not know about all the classes in the package until it is downloaded.
Chuck source share