#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. Это все еще говорит то же самое?