- (двойной) допустимый тип возвращаемого значения для метода в Objective C - PullRequest
2 голосов
/ 14 апреля 2010

Я пытаюсь вернуть значение типа double из другого объекта, затем сохранить его в новом объекте типа double, но при инициализации я получаю несовместимые типы ошибок Что мне здесь не хватает?

double gradePoints = 0.0;
double other = [aCourse getGradePoints];
gradePoints = gradePoints + other;

Это в моем другом объекте

- (double) getGradePoints{
   return 12.0;
 }

Ответы [ 3 ]

7 голосов
/ 14 апреля 2010

Скорее всего, вы забыли добавить метод getGradePoints в объявление интерфейса: это приведет к неявному объявлению метода как - (id) getGradePoints; в результате вы видите предупреждение.

2 голосов
/ 14 апреля 2010

Введена ссылка на aCourse или это id? Если я правильно помню, если класс aCourse не известен компилятору, он предполагает, что результатом всех вызовов метода будет тип id.

0 голосов
/ 14 апреля 2010

Стандарт kvo getter / setter определяет геттеры в виде getPropertyName. Если у вас есть свойство с именем gradePoints, компилятор будет интерпретировать getGradePoints как получатель этого свойства, и если свойство не определено как double, он будет жаловаться.

Даже определение локальной переменной следующим образом:

double gradePoints = 0.0;
double other = [aCourse getGradePoints];

... может запутать компилятор, потому что он может попытаться обработать getGradePoints как получатель для gradePoints.

Objective-C полагается на соглашения об именовании для поиска конкретных типов методов, потому что он не может предположить во время компиляции, какие методы будут иметь объект в определенных обстоятельствах.

В общем, вам следует избегать использования имен методов, которые начинаются с "get" и "set", потому что компилятор хочет рассматривать их как методы получения и установки для свойств. Вероятность путаницы с компилятором высока.

Я пытаюсь использовать префиксы, такие как «fetch», «grab», «get» и т. Д. Вместо «get», чтобы быть в безопасности.

...