事实证明我在该类的实例上调用了一个类方法。
我已将该行代码修改为:
double result = [CalculatorBrain runProgram:[self.brain program] usingVariableValues:[self variableValues]];
但是当我运行程序并评估该行时,我收到以下错误:
+ [CalculatorBrain runProgram:usingVariableValues:]:无法识别的选择器发送到类0x6908
为什么我在视图的enterPressed中的XCode中收到以下错误:'CalculatorBrain'没有可见的@interface声明选择器'runProgram:usingVariableValues:'?
#import "CalculatorViewController.h"
#import "CalculatorBrain.h"
@interface CalculatorViewController()
@property (nonatomic, strong) CalculatorBrain *brain;
@property (nonatomic, strong) NSMutableDictionary *variableValues;
@end
@implementation CalculatorViewController
@synthesize brain = _brain;
@synthesize variableValues = _variableValues;
- (CalculatorBrain *)brain {
if (!_brain) _brain = [[CalculatorBrain alloc] init];
return _brain;
}
- (NSMutableDictionary *)variableValues {
if (!_variableValues) {
_variableValues = [[NSMutableDictionary alloc] init];
}
return _variableValues;
}
- (IBAction)enterPressed {
double *result = [self.brain runProgram:[self.brain program] usingVariableValues:[self variableValues]];
}
#import <UIKit/UIKit.h>
@interface CalculatorBrain : NSObject
+ (double)runProgram:(id)program usingVariableValues:(NSDictionary *)variableValues;
@property (readonly) id program;
@end
答案 0 :(得分:2)
在CalculatorBrain.h中,您要声明一个类方法而不是实例方法:
+ (double)runProgram:(id)program usingVariableValues:(NSDictionary *)variableValues;
使用-
代替+
。
或者,如果您打算将其作为类方法,请将其称为:
double *result = [CalculatorBrain runProgram:[self.brain program] usingVariableValues:[self variableValues]];
答案 1 :(得分:0)
如果要添加类级方法,则不是在实例上调用方法 - 而是在类本身上调用。例如:
double *result = [self.brain runProgram:[self.brain program] usingVariableValues:[self variableValues]];
会变成:
double *result = [CalculatorBrain runProgram:[self.brain program] usingVariableValues:[self variableValues]];
我没有看到上面定义的方法,所以我不能确定这是否是你想要的。