我想在Objective C中編寫一個類方法。當我聲明該方法時,項目生成良好。但是,只要我嘗試調用該方法,構建就會失敗。這是我的代碼。不能調用類方法[self theMethod:]
頭文件
#import <UIKit/UIKit.h>
@interface LoginViewController : UIViewController {
//Declare Vars
}
- (IBAction) login: (id) sender;
+ (NSString *) md5Hash:(NSString *)str;
@end
源文件
+ (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"];
}
真的 - 關鍵是要擁抱你不編寫Java代碼。 Objective-C沒有靜態方法;它有類方法,它們可以被重寫,否則就像實例方法一樣(類是元類的一個實例)。 – bbum
你應該使用'[[self class] md5Hash]'否則子類將會遇到麻煩,如果他們想從'login:'調用被覆蓋的'md5Hash:'。 –