title: No visible @interface for 'class-name' declares the selector 'method-name'
body: <p>I'm writing a method as below in my View Controller:</p>
  
  <pre><code>- (IBAction)expressionEvaluation:(UIButton *)sender {
      NSDictionary *testValues = [NSDictionary dictionaryWithObjectsAndKeys:@"x", 2, @"y", 3, @"z", 4, nil];
      //the below line gives the error
      double result = [self.brain evaluateExpression:self.brain.expression usingVariableValues:testValues];
      NSString *resultString = [NSString stringWithFormat:@"%g", result];
      self.display.text = resultString;
  }
  </code></pre>
  
  <p>And in my 'brain' class I have declared the not-yet-finished method: </p>
  
  <pre><code>#import &lt;Foundation/Foundation.h&gt;
  
  @interface CalculatorBrain : NSObject
  - (void) pushOperand:(double)operand;
  - (void) setVariableAsOperand:(NSString *)variableName;
  - (void) performWaitingOperation;
  - (double) performOperation:(NSString *)operation;
  
  @property (readonly) id expression;
  + (double)evaluateExpression: (id)anExpression
           usingVariableValues: (NSDictionary *)variables; //declared here
  @end
  </code></pre>
  
  <p>...in the .h, and in the .m:</p>
  
  <pre><code>+ (double) evaluateExpression:(id)anExpression usingVariableValues:(NSDictionary *)variables {
      double result = 0;
      int count = [anExpression count];
      for (int i = 0; i &lt; count; i++) {
  
      }
  
      return result;
  }
  </code></pre>
  
  <p>Why am I getting this "No visible @interface for 'CalculatorBrain' declares the selector 'evaluateExpression:usingVariableValues'"error? I'm new to objective-c, but I imagine this means it's not seeing my declaration. I'm not sure if it's a syntax/formatting issue, though, because I'm new to the language.</p>