Objective C — Создание экземпляров объектов и вызов методов с несколькими параметрами

#iphone #objective-c #xcode #xcode4

#iPhone #objective-c #xcode #xcode4

Вопрос:

Привет, у меня есть следующий класс под названием CalculatorOperations:

 #import "CalculatorOperations.h"

@implementation CalculatorOperations

 (float)add:(float)numOne with:(float)numTwo{
    return numOne   numTwo;
}
@end
  

Затем я пытаюсь вызвать этот метод класса следующим образом из моего класса Calculator:

 #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 переменной (ответ).

Почему это?

Ответ №1:

Вы не должны вызывать метод класса ( указывает метод класса) для экземпляра класса. Кроме того, вы не init редактируете класс так, как требуется для экземпляра этого класса.

Попробуйте это:

 @implementation Calculator

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

@end
  

Ответ №2:

Означает, что это метод класса, а не метод экземпляра, измените методы на - , чтобы это был метод 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
  

Черт возьми, мне нужно научиться печатать быстрее.

Ответ №3:

Вам нужно….

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

Плюс ваш метод является методом класса (отсюда и )…

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

Комментарии:

1. Это все еще говорит то же самое?