在声明存在时没有可见的声明错误,目标c

时间:2012-07-21 03:03:05

标签: objective-c xcode declaration segue cs193p

您好我收到错误“没有可见的@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,我应该避免将其中一个文件导入到另一个文件中吗?

1 个答案:

答案 0 :(得分:1)

您正在进行实例方法调用。 + (double)runProgram:(id)program usingVariableValues: (NSDictionary*) variableValues;是一种类方法。

有两种可能的解决方法:

  • +更改为-
  • [self.graphingPoint runProgram:...]更改为[[self.graphingPoint class] runProgram:...]

我不知道代码是如何构造的,因此不太明显哪个更合适。