您好我收到错误“没有可见的@interface为'CalculatorBrain'在graphPoint.y代码部分声明选择器'runprogram:usingVariableValues:'”
-(id) programToGraph:(GraphingView *)sender{
CGPoint graphPoint;
for( int x =-100;x<100; x++)
{
NSDictionary* xValue = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:x] forKey:@"X", nil];
graphPoint.x =x;
//error occurs here
graphPoint.y = [self.graphingPoint runProgram: [self.graphingPoint program] usingVariableValues:xValue];
}
}
我通过segue和协议传递self.graphingPoint,因此它与对象'CalculatorBrain'具有相同的值,该对象位于不同的MVC中并调用runprogram:usingVariableValues。我对calculatorBrain的实现有上面的方法并且在它自己的viewController中工作但是当我在这个新的viewController中通过协议方法调用它时它说我不在CalculatorBrain中声明它。这是原始声明
@interface CalculatorBrain : NSObject
- (void)pushOperand:(double)operand;
- (double)performOperation:(NSString *)op;
@property (nonatomic, readonly) id program;
+ (NSString *)descriptionOfProgram:(id)program;
+ (double)runProgram:(id)program usingVariableValues: (NSDictionary*) variableValues;
@property (nonatomic, strong) NSDictionary* testVariableValues;
- (void) testValue : (NSString*) test;
-(void) variablePressed:(NSString*) variable;
-(NSString*) callDescription;
+(NSString*) descriptionTop: (NSMutableArray*) stack;
-(id) undoVariable;
是否可能导致错误,因为我将CGPoint.y值指定为浮点值为double?另外,既然这些是单独的MVC,我应该避免将其中一个文件导入到另一个文件中吗?
答案 0 :(得分:1)
您正在进行实例方法调用。 + (double)runProgram:(id)program usingVariableValues: (NSDictionary*) variableValues;
是一种类方法。
有两种可能的解决方法:
+
更改为-
。[self.graphingPoint runProgram:...]
更改为[[self.graphingPoint class] runProgram:...]
我不知道代码是如何构造的,因此不太明显哪个更合适。