I'm sorry, but I find this article just stupid, very simple investigation can prove NimbleKit does not use any private APIs and abstract discussion without knowing a thing about topic is pretty lame.
The situation happened when some NimbleKit APIs were given same names as Apple's APIs fixed by simple renaming.
The answer I posted on the topic:
My name is Alexander Voloshyn and I’m the developer of NimbleKit framework. This situation is a simple misunderstanding, those API names are NimbleKit APIs and not Apple’s private. Think now by yourself, how would you call the method which sets parameters? I think that Apple is very wrong in this situation as private APIs should have special names like “setInternalPrivateParameters” or something complicated which can not be the same as half developers would call their methods, for instance Microsoft calls their private APIs with 2-3 dashes at the beginning of the name, so they are sure people won’t call functions like that. However this has been already changed, I renamed NimbleKit APIs to be setNKParameters, setNKCurrentPage, setNKWebView, etc so now this is solved and application won’t be rejected anymore. This is not big deal or problem, if you NimbleKit user all you have to do is update and resubmit your application.