Проблемы при назначении увеличенных значений cgpointmake
Вопрос
Я пытаюсь использовать следующий код для прохождения страниц PDF с помощью WebView.
float Y = pdfNavigateController.webView.center.y + gY;
[pdfNavigateController.webView.scrollView setContentOffset:CGPointMake(0,Y)];
Значение GY также является поплавкой и увеличивается, поскольку пользователь выбирает следующую страницу. Код в настоящее время бросает ошибку «недействительные операнды в двоичное выражение (« cgfloat »(он же« float ») и« float *»). Я предполагаю, что операнды недействительны, так как значение является указателем, но я не знаю, как передать увеличенное значение без получения этой ошибки.
Решение
Если GY является указателем (на поплавок), вам необходимо обойти его, чтобы получить доступ к его значению:
float Y = pdfNavigateController.webView.center.y + *gY;
РЕДАКТИРОВАТЬ
Убедитесь, что у вас есть действительный указатель (т.е. GY указывает на фактический поплавок). Если это не инициализированный указатель, это не сработает.
Не могли бы вы сказать нам, как вы получите gY
?
Редактировать 2
Я видел, как вы сказали, что GY объявляется:
static float *gY = 0;
Это нулевой указатель.
И вы не можете определить нулевый указатель.
Когда вы увеличиваете его, вы увеличиваете указатель (адрес памяти), а не значение. Так что ваш указатель на самом деле указывает на мусор.
Почему вы используете указатель? Вы должны использовать:
static float gY = 0;
Другие советы
если gY
это указатель на использование поплавка *gY
:
float Y = pdfNavigateController.webView.center.y + *gY;
Ошибка rmessage: ('CGFloat' (aka 'float') and 'float *')
говорит это CGFloat
ожидается а float
Но получил поплавок: float *
Для отладки сначала разбивайте операцию в доступе к значению, указанному.
float gYValue = *gY;
float Y = pdfNavigateController.webView.center.y + gYValue;
Трудно устранить устранение неполадок, так как вы опубликовали очень небольшое количество своего кода. Однако у меня есть идея. Если GX является аргументом метода, решение может быть следующим:
Чтобы решить эту проблему, добавьте объявление метода в файл .h для вашего класса. Надеюсь, это поможет - если не, пожалуйста, опубликуйте еще код.