Проблемы с назначением увеличенных значений CGPointMake - PullRequest
1 голос
/ 30 ноября 2011

Я пытаюсь использовать следующий код для перемещения по страницам PDF с помощью webView.

 float Y = pdfNavigateController.webView.center.y + gY;
 [pdfNavigateController.webView.scrollView setContentOffset:CGPointMake(0,Y)];

Значение gY также является плавающим и увеличивается, когда пользователь выбирает следующую страницу. В настоящее время код генерирует ошибку «Недопустимые операнды в двоичном выражении (« CGFloat »(иначе« float ») и« float * ») Я предполагаю, что операнды являются недопустимыми, поскольку значение является указателем, но я не знаю, как передать увеличенное значение без этой ошибки.

Ответы [ 3 ]

1 голос
/ 30 ноября 2011

, если gY - указатель на использование с плавающей точкой *gY:

float Y = pdfNavigateController.webView.center.y + *gY;

Сообщение об ошибке: ('CGFloat' (aka 'float') and 'float *') говорит, что CGFloat ожидал float, но получил указатель с плавающей точкой: float *

Для отладки сначала разбейте операцию на доступ к указанному значению.

float gYValue = *gY;
float Y = pdfNavigateController.webView.center.y + gYValue;
0 голосов
/ 30 ноября 2011

Трудно устранить неполадки, поскольку вы опубликовали очень небольшое количество своего кода. Однако у меня есть идея. Если gX является аргументом метода, решение может быть следующим:

Чтобы исправить эту проблему, добавьте объявление метода в файл .h для вашего класса. Надеюсь, что это поможет - если нет, пожалуйста, отправьте еще немного кода.

0 голосов
/ 30 ноября 2011

Если gY - указатель (на число с плавающей точкой), вам необходимо разыменовать его, чтобы получить доступ к его значению:

float Y = pdfNavigateController.webView.center.y + *gY;

EDIT

Убедитесь, что у вас есть действительный указатель (т. Е. GY указывает на фактическое значение с плавающей точкой). Если это неинициализированный указатель, он не будет работать.

Подскажите, пожалуйста, как вы получаете gY?

РЕДАКТИРОВАТЬ 2

Я видел, как вы сказали, что gY объявлено как:

static float *gY = 0;

Это указатель NULL.
И вы не можете разыменовать указатель NULL.

Когда вы увеличиваете его, вы увеличиваете указатель (адрес памяти), а не значение. Таким образом, ваш указатель на самом деле указывает на мусор.

Почему вы используете указатель? Вы должны использовать:

static float gY = 0;
...