2011-06-09 59 views
0
实例化对象和调用方法

您好我有下面的类名为CalculatorOperations:目标C - 多参量

#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]; 
    float answer = [calcOp add:numOne with:numTwo]; 
    return answer; 
} 

@end 

问题是,当试图将add:with方法的返回值赋值给变量(答案)时,我不断收到“初始化中的不兼容类型”消息。

这是为什么?

回答

2

你不应该调用类方法( +指示类方法)。此外,您不是该类的实例所需的类。

试试这个:

@implementation Calculator 

+(float)add:(float)numOne to:(float)numTwo{ 
    return [CalculatorOperations add:numOne with:numTwo]; 
} 

@end 
+0

完美,错误消失了。谢谢! – user559142 2011-06-09 14:57:03

0

您需要....

CalculatorOperations *calcOp = [[CalculatorOperations alloc] init]; 

加上你的方法是一个类方法(因此+)...

float value = [CalculatorOperations add:1.0 with:2.0]; 
+0

它仍然说同样的事情? – user559142 2011-06-09 14:56:02

1

+手段即是一个类的方法不是一个实例方法,改方法-得到它是一个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 

达姆我需要学习打字速度更快。