Kann eine Klassenmethode nicht mit [self theMethod:] aufrufen
Ich versuche zu schreiben, die Methode einer Klasse in Objective C. Das Projekt baut gut, wenn ich erklären die Methode. Aber der build fehlschlägt, wenn ich versuche, rufen Sie die Methode. Hier ist mein code.
Header-Datei
#import <UIKit/UIKit.h>
@interface LoginViewController : UIViewController {
//Declare Vars
}
- (IBAction) login: (id) sender;
+ (NSString *) md5Hash:(NSString *)str;
@end
Quelldatei
+ (NSString *) md5Hash:(NSString *)str {
const char *cStr = [str UTF8String];
unsigned char result[16];
CC_MD5( cStr, strlen(cStr), result );
return [NSString stringWithFormat:
@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
result[0], result[1], result[2], result[3],
result[4], result[5], result[6], result[7],
result[8], result[9], result[10], result[11],
result[12], result[13], result[14], result[15]
];
}
- (IBAction) login: (id) sender {
//Call the class method
[self md5Hash:@"Test"];
}
InformationsquelleAutor der Frage Stefan Bossbaly | 2011-07-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie es so nennen:
Weil es eine Klasse (LoginViewController) - Methode und nicht eine Instanz (selbst) - Methode.
InformationsquelleAutor der Antwort MByD
Oder Sie tun können:
denen sollte genau das gleiche wie der Aufruf [LoginViewController md5Hash:@"Test"] direkt mit den Namen der Klasse. Denken Sie daran, dass md5Hash ist eine Methode der KLASSE, nicht einer Instanz, so kann man es nicht nennen in Objekten (Instanzen der Klasse), sondern von der Klasse selbst.
InformationsquelleAutor der Antwort Alejandro Iván
rufen Sie statische Methoden in der Klasse, und nicht auf die Instanz. So sollte
InformationsquelleAutor der Antwort filipe
Den
+
symbol zeigt an, dass Sie die Deklaration einer Methode der Klasse. Ersetzen Sie es mit-
. Das Minuszeichen bezeichnet die Instanz-Methode. Danach können Sie es nennen mitself
Objekt.und
InformationsquelleAutor der Antwort Abhigyan