您好我希望此代码是公共类:
+ (void) alcSubstract {
NSLog(@"tes");
if (alkOld == 0) {
} else {
Promille = 0;
alkOld = alkOld - (0.1/3600);
[self calculation];
}
}
但现在[self calculation]
出现错误
错误:没有已知的选择器计算方法...
计算如下:
- (void)calculation
{
NSLog(@"Starting calcultion");
if (Mann == true) {
Promille = alkGramm/(0.7*gewicht);
} else {
Promille = alkGramm/(0.6*gewicht);
}
//NSLog(@"%f", Promille);
promilleOut.textColor = [UIColor greenColor];
if (Promille >= 1) {
promilleOut.textColor = [UIColor yellowColor];
} else if (Promille >= 1.5){
promilleOut.textColor = [UIColor redColor];
}
promilleOut.text = [NSString stringWithFormat:@"%f", alkOld + Promille];
alkOld = [promilleOut.text floatValue];
[self timeCalc];
alkGramm = 0;
}
`
答案 0 :(得分:0)
您无法从类方法中调用实例方法。当你从类方法中引用self时,它会寻找另一个给定名称的类方法。
解决方案1:
将calculation
更改为类方法
+ (void)calculation
解决方案2
创建特定类的实例并使用它:
+ (void) alcSubstract
{
NSLog(@"tes");
if (alkOld == 0)
{
}
else
{
Promille = 0;
alkOld = alkOld - (0.1/3600);
YourClass *obj = [[YourClass alloc] init]; // Example only, make the object a global or static one
[obj calculation];
}
}
答案 1 :(得分:0)
- (void)calculation
将计算声明为实例方法(' - '指定实例方法)
+(void)alcSubtract
声明alcSubtract是一个类方法(' +'指定一个类方法。
在类方法alcSubtract
中,self指的是特定于您定义的类的类Class的实例。 [self calculation]
尝试调用该类的方法(类方法)。但是,由于calculation
是实例方法,而不是类方法,因此会出现编译器错误。
通过查看calculation
中的代码,我的猜测是alcSubtract
应该是一个实例方法。或者,应将当前实例方法的几种方法更改为类方法。