In the evolution of iOS Apple usually starts out with having an API private until it is polished and documented enough to allow developers to use it.
There are many more methods and classes on iOS than you have headers or documentation for. for example there is a class to convert NSAttributedString to HTML, named NSHTMLWriter. This is not documented and not public but gets used internally by UITextView.
Other examples for private APIs include direct access to things like cellular network infos, low-level hardware access or something as benign as the exact battery loading percentage (the public API only returns 5% increments)
Not making an API not public allows Apple to polish it further and possibly even changing names which would break software relying on the previous naming. Apple can do that because they control all of the system software. To change something in published APIs they have to do this dance with deprecation.
The App Store Review team has a scanner app that looks through your submitted app and flags alls calls to undocumented methods and classes. There are ways to circumvent those with obfuscating method selectors, but generally you want to play nice with Apple because they don't like it if you break the rules.
There are some very very rare examples where a private API is made public retroactively. i.e. a method already existed in iOS 5 that Apple allowed us to use even though there was no documentation for it, only a Tech Note.
In Summary: Only use classes and methods that you find documented in official Apple docs.
PS: there are methods to get the data for and from UIWebViews via official channels. A more detailed technical answer here depends entirely on what you are trying to do.