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

Objective CFacebook Graph-ApiIos7socket.ioXcode5

Objective C Problem Overview


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

> The app references non-public selectors in Payload/.app/ name>: 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

Objective C Solutions


Solution 1 - Objective C

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.

Solution 2 - Objective C

This can help you:

Before:

#import "SocketIOJSONSerialization.h"

extern NSString * const SocketIOException;

// covers the methods in SBJson and JSONKit
@interface NSObject (SocketIOJSONSerialization)

// used by both JSONKit and SBJson
- (id) objectWithData:(NSData *)data;

// Use by JSONKit serialization
- (NSString *) JSONString;
**- (id) decoder;**

// Used by SBJsonWriter
- (NSString *) stringWithObject:(id)object;

@end

After:

#import "SocketIOJSONSerialization.h"

extern NSString * const SocketIOException;

// covers the methods in SBJson and JSONKit
@interface NSObject (SocketIOJSONSerialization)

// used by both JSONKit and SBJson
- (id) objectWithData:(NSData *)data;

// Use by JSONKit serialization
- (NSString *) JSONString;
**- (id) jsonDecoder;**

// Used by SBJsonWriter
- (NSString *) stringWithObject:(id)object;

@end

I get in this link: http://blog.csdn.net/erica_sadun/article/details/12188083

Solution 3 - Objective C

Check your Target Membership for all classes used in project. In some cases when you create or copy your target the warning may appears without link error.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAkshay AherView Question on Stackoverflow
Solution 1 - Objective CAnders JohansenView Answer on Stackoverflow
Solution 2 - Objective CMarcos Alessandro FonsecaView Answer on Stackoverflow
Solution 3 - Objective CPetr SyrovView Answer on Stackoverflow