目标C - 使用多个参数实例化对象和调用方法

时间:2011-06-09 14:50:05

标签: iphone objective-c xcode xcode4

您好我有以下类名为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方法的返回值赋给变量(回答)时,我不断收到“初始化时不兼容的类型”消息。

为什么会这样?

3 个答案:

答案 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];