Apple rejects apps that use "non-public selectors." Non-public selectors are private APIs; app developers aren't allowed to use them.
Apple rejects apps that use "non-public selectors." Non-public selectors are private APIs; app developers aren't allowed to use them.
The rejection typically appears when uploading an app via Xcode, with an error like this:
The app references non-public selectors in Payload/XXXXXX.app/XXXXXX:
If you're very lucky, you may find that despite the scary error message in Xcode, Apple will accept your binary anyway, and it will appear in App Store Connect for you to submit it.
Barring that, you may be able to search your own source code to find references to these forbidden selectors. But, it's much more common to find that some third-party library (a CocoaPod or Swift package you're using) is responsible.
Typically the only way to diagnose the issue is to try removing third-party libraries from your code, one by one, until the error goes away. Then, once you've found the library responsible, file a bug against the library developer. Once the library fixes the issue, you'll have to upgrade to a newer version of the library that stops using private selectors.