The app references non-public selectors in Payload/<Appname>.app/<App name>: decoder

Akshay Aher picture Akshay Aher · Oct 15, 2013 · Viewed 32.4k times · Source

I am getting this warning while submitting app to the Apps store through organizer.

The app references non-public selectors in Payload/.app/: decoder

i know we get this warning if we use any Third Party API in our application. I have used SOCKETIO-ObjC library for chat functionality in application. Also used facebook iOS sdk for fb implementation.So i am not getting exactly what causes this warning.! Please find attached ScreenShot for better understanding

Answer

Anders Johansen picture Anders Johansen · Oct 15, 2013

You may get this warning just for using a selector in your own code or third party code that has the same name as some selector that is marked as non-public. Happens to me all the time. Never got rejected for it.

By "same name" i mean just something as simple as you having an object with this selector:

-(id) XYZKMyClass doSomethingFancy:(id) toThis

...and there being a selector like this for an internal Apple functionality

-(id) ApplesClass  doSomethingFancy:(id) toSomething

So: What it seems they are looking for is the signature -(id) doSomethingFancy:(id). You can see how it's very easy to accidentally bump up against this.

Presumably they perform a deeper check at the App Store Police HQ, and determine that the flagged selector is in your code, and hence OK.