2009-02-16 13 views
5

Ich habe ein Projekt, das mit einigen Warnungen kompiliert. Es ist ein iPhone-Projekt, das einige Methoden auf NSDate verwendet, die scheinbar nicht die Header des iPhone SDK sind, aber trotzdem einwandfrei funktionieren. Wenn ich diese Methoden aufrufen, bekomme ich Warnungen wie:Warnungen dauerhaft ignorieren

NSDate warnings http://beautifulpixel.com/assets/NSDate_Warnings-20090215-235727.png

So wie Schweigen ich die Warnungen dauerhaft, um XCode zu sagen, „es ist in Ordnung, wirklich.“

Oder wie korrigiere ich die Warnungen? Dieser Code funktioniert gut auf dem Gerät und Apple hat bereits eine App genehmigt, die diese Methoden verwendet, also kann ich XCode sicher verstehen, dass die Methoden wirklich da sind.

Antwort

3

Sie können eine kurze Schnittstellenerweiterung schreiben früh in Sie Datei .M diese Warnungen

Beispiel zu unterdrücken:

@interface NSDate (SuppressSomWarnings) 
- (void)dateWithNaturalLanguageString:(NSString*)_str; 
@end 
2

Es ist seltsam, ich bekomme keine Warnung, wenn ich die gleichen zwei Zeilen eingeben ... Haben Sie die Header und Frameworks korrekt in Ihr Projekt importiert?

Ich sehe, dass sie in NSCalendateDate.h definiert sind, die in Foundation.framework ist.

Wenn dies nicht möglich ist, können Sie versuchen, die Schnittstellendefinitionen direkt in Ihren Code einzufügen, z. B. oben in der .m-Datei, um zu sehen, ob dies die Warnungen beseitigt. (Siehe die Antwort von epatel, die während ich dies schrieb!)

+0

Meine Foundation.framework hat diese Header-Datei nicht; nur NSDate.h (die diese Methoden fehlt) und NSCalendar.h (die die NSCalendar-Klasse beschreibt). Um es klar zu sagen, dies ist ein iPhone-Projekt. Ich denke, die Cocoa-Header definieren diese Methoden gut, aber die UIKit-Header nicht. –

+0

Das selbe für mich: iPhone Projekt. Ich verwende das neueste SDK für iPhone 2.2.1. Es ist nicht normal, dass diese Header-Datei fehlt, vielleicht sollten Sie versuchen, xcode neu zu installieren ... – squelart

+0

es scheint so ... Vielen Dank für die Plausibilitätsprüfung. –

0

Haben Sie das richtige SDK konfiguriert? Vielleicht gefällt Ihnen die neueste Version, aber Sie verwenden alte Header-Dateien.

+0

Ja, mein Foundation.framework wird vom 2.2 SDK bereitgestellt. –

8

Ich würde Ihnen sehr empfehlen, diese Methoden nicht zu verwenden. Nur weil sie im Foundation-Framework von Mac OS X deklariert sind, bedeutet das nicht, dass sie private APIs auf dem iPhone sind. Apple wäre gut in ihrem Recht, Ihre App aus dem Geschäft zu entfernen. Ebenso gibt es nichts, was Apple daran hindern könnte, die Foundation für ein iPhone OS 2.2.2 oder eine neuere Version etwas aufzuräumen und diese beiden Methoden zu entfernen, wodurch Ihre App kaputt gemacht wird.

0

Ihr Code funktioniert möglicherweise im Simulator, funktioniert aber am Telefon?

Der Simulator verwendet das OS X Foundation-Framework, das eine Obermenge dessen darstellt, was auf dem iPhone verfügbar ist.