Die App verweist auf nicht öffentliche Selektoren in Payload / <Appname> .app / <App-Name>: Decoder


73

Ich erhalte diese Warnung, wenn ich eine App über den Organizer an den Apps Store sende.

Die App verweist auf nicht öffentliche Selektoren in Payload / .app /: decoder

Ich weiß, dass wir diese Warnung erhalten, wenn wir eine Drittanbieter-API in unserer Anwendung verwenden. Ich habe die SOCKETIO-ObjC- Bibliothek für Chat-Funktionen in der Anwendung verwendet. Auch verwendet Facebook iOS SDK für die FB-Implementierung. Also bekomme ich nicht genau, was diese Warnung verursacht.! Zum besseren Verständnis finden Sie den beigefügten Screenshot

Antworten:


117

Diese Warnung wird möglicherweise nur angezeigt, wenn Sie einen Selektor in Ihrem eigenen Code oder in einem Code eines Drittanbieters verwenden, der denselben Namen wie ein Selektor hat, der als nicht öffentlich markiert ist. Passiert mir die ganze Zeit. Wurde nie dafür abgelehnt.

Mit "gleichem Namen" meine ich etwas so Einfaches wie ein Objekt mit diesem Selektor:

-(id) XYZKMyClass doSomethingFancy:(id) toThis

... und es gibt einen solchen Selektor für eine interne Apple-Funktionalität

-(id) ApplesClass  doSomethingFancy:(id) toSomething

Also: Was sie anscheinend suchen, ist die Signatur - (id) doSomethingFancy: (id). Sie können sehen, wie leicht es ist, versehentlich darauf zu stoßen.

Vermutlich führen sie im App Store Police HQ eine eingehendere Überprüfung durch und stellen fest, dass sich der markierte Selektor in Ihrem Code befindet und daher in Ordnung ist.


1
Bitte. Es tut mir leid, dass ich Ihnen keinen Link zu einer offiziellen Erklärung geben kann, aber ich konnte zu diesem Thema keine finden. Alles, was ich mit Sicherheit sagen kann, ist, dass mir dies jedes Mal passiert, wenn ich ein Update für meine primäre App einreiche, und bisher ist nichts Schlimmes passiert.
Anders Johansen

35
Ich wünschte, es gäbe eine Möglichkeit, nach dem nicht öffentlichen Selektor zu suchen, damit ich ihn umbenennen kann.
Hackmodford

4
Im Bewusstsein, dass dieser Thread Monate alt ist, aber ... Gibt es eine Möglichkeit, über die Namespace-Kollision beim Kompilieren / Erstellen informiert zu werden, anstatt die App an den Store zu senden?
Byron

1
Hallo Byron, tut mir leid, wenn ich es nicht gefunden habe.
Anders Johansen

can apple lehnt dieselbe Warnung ab wie: Die App verweist auf nicht öffentliche Selektoren in Payload / .app /: id @AndersJohansen
Dhaval Bhadania

4

Dies kann Ihnen helfen:

Vor:

#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

Nach:

#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

Ich erhalte in diesem Link: http://blog.csdn.net/erica_sadun/article/details/12188083


Das war genau mein Problem. Vielen Dank
Shaheen Ghiassy

0

Überprüfen Sie Ihre Zielmitgliedschaft für alle im Projekt verwendeten Klassen. In einigen Fällen wird beim Erstellen oder Kopieren Ihres Ziels die Warnung möglicherweise ohne Verbindungsfehler angezeigt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.