您好我有以下类名为CalculatorOperations:
#import "CalculatorOperations.h"
@implementation CalculatorOperations
+(float)add:(float)numOne with:(float)numTwo{
return numOne + numTwo;
}
@end
然后我尝试从我的Calculator类中调用此类方法:
#import "Calculator.h"
#import "CalculatorOperations.h"
#import <Foundation/Foundation.h>
@implementation Calculator
+(float)add:(float)numOne to:(float)numTwo{
CalculatorOperations *calcOp = [CalculatorOperations alloc];
float answer = [calcOp add:numOne with:numTwo];
return answer;
}
@end
问题是当我尝试将add:with方法的返回值赋给变量(回答)时,我不断收到“初始化时不兼容的类型”消息。
为什么会这样?
答案 0 :(得分:2)
您不应该在类的实例上调用类方法(+
表示类方法)。此外,您不是init
该类实例所需的类。
试试这个:
@implementation Calculator
+(float)add:(float)numOne to:(float)numTwo{
return [CalculatorOperations add:numOne with:numTwo];
}
@end
答案 1 :(得分:1)
+
表示它是一个Class方法而不是实例方法,将方法更改为-
以使其成为一个instacne方法。
#import "CalculatorOperations.h"
@implementation CalculatorOperations
- (float)add:(float)numOne with:(float)numTwo{
return numOne + numTwo;
}
@end
您还需要初始化课程:
#import "Calculator.h"
#import "CalculatorOperations.h"
#import <Foundation/Foundation.h>
@implementation Calculator
+(float)add:(float)numOne to:(float)numTwo{
CalculatorOperations *calcOp = [[CalculatorOperations alloc] init];
float answer = [calcOp add:numOne with:numTwo];
return answer;
}
@end
或者通过(float)add:(float)numOne with:(float)numTwo
方法更改呼叫:
@implementation Calculator
+(float)add:(float)numOne to:(float)numTwo{
float answer = [CalculatorOperations add:numOne with:numTwo];
return answer;
}
@end
Damm我需要学会更快地打字。
答案 2 :(得分:0)
你需要......
CalculatorOperations *calcOp = [[CalculatorOperations alloc] init];
另外你的方法是一个类方法(因此+)...
float value = [CalculatorOperations add:1.0 with:2.0];