2010-11-20 17 views
0

Ich versuche, eine Nachricht mit mehreren Objekten zu senden, aber es kann nicht funktionieren. Es funktioniert perfekt mit einer Nachricht (objectsArray), aber nicht mit beiden.Senden von Nachrichten an Objekte

PlayerData.h:

- (void)savePlayerData:(NSArray *)objectsArray andKey:(NSString *)keyString; 

PlayerData.m:

- (void)savePlayerData:(NSArray *)objectsArray andkey:(NSString *)keyString { 

Das Folgende ist, wo ich versuche player von einem anderen .m zu nennen:

NSString *keyString = [[NSString alloc] init]; 
    keyString = @"key test"; 
    PlayerData *accessPlayerDataFunction = [PlayerData new]; 
    [accessPlayerDataFunction savePlayerData:objs andKey:keyString]; 

objs ist die NSArray.

Der Fehler, den ich bekommen ist:

Warnung: unvollständige Umsetzung der Klasse 'player' Warnung: Methodendefinition für '-savePlayerData: andKey:' nicht

gefunden
+1

Beachten Sie, dass Sie Zeilen als Code formatieren können, indem Sie sie um vier Leerzeichen einrücken. Die Schaltfläche "101 \ n010" in der Editor-Symbolleiste erledigt dies für Sie. Klicken Sie auf das orangefarbene Fragezeichen in der Editor-Symbolleiste, um weitere Informationen und Tipps zum Formatieren zu erhalten. – outis

Antwort

4

Das Problem ist, dass Sie haben einen Tippfehler in Ihrem Selektor-Namen innerhalb der Implementierung (die ".m" -Datei).

im Header schreiben Sie andKey (Kamel Fall)

(void)savePlayerData:(NSArray *)objectsArray andKey:(NSString *)keyString; 

und bei der Umsetzung haben Sie andkey (kein Kamel Fall)

(void)savePlayerData:(NSArray *)objectsArray andkey:(NSString *)keyString 

von Apart, dass Sie ein Speicherleck :

NSString *keyString = [[NSString alloc] init]; 
keyString = @"key test"; 

Wenn Sie der Variablen @ key test zuweisen, verlieren Sie den Bezug auf das ursprüngliche Objekt, dem Sie zuvor die Zeile zugewiesen hatten. Sie können @ key test einfach keyString zuweisen.

+0

das Leck mit KeyString ich neu und verwendet es nur zum Testen. – PeterK

+0

die camel case erklärung ich fürchte ich verstehe nicht. ist nicht undKey ein Kamelfall? Ich würde es sehr schätzen, wenn Sie die Antwort ein wenig mehr erklären könnten. – PeterK

+0

ja andKey ist Kamelfall. Sie verwenden camel case in der .h-Datei und keinen camel case in der .m-Datei. Deshalb kann der Compiler die Implementierung nicht finden. Wie bei C wird bei Objective-C die Groß-/Kleinschreibung beachtet. –

Verwandte Themen