2011-11-30 45 views
1

我試圖使用下面的代碼來瀏覽一個PDF使用webView的頁面。問題分配遞增值到CGPointMake

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

值gY也是一個浮點數,隨着用戶選擇下一頁而增加。該代碼當前正在向二進制表達式('CGFloat'(又名'float')和'float *')拋出一個錯誤'無效的操作數。我猜操作數是無效的,因爲該值是一個指針,但我不知道如何傳遞增加的值而不會出現此錯誤。

+0

你能告訴我們究竟在何處GY來自,或者它如何實例化。由於錯誤似乎念想你想添加一個浮動*(浮動指針)浮(CGFloat的)。這種表明gY實際上被聲明爲float *。 –

+0

代碼中的gY是什麼?它在哪裏宣佈? – RaffAl

+0

gY在聲明下的頁面頂部與所有其他全局變量一起聲明爲靜態float * gY = 0。它在達到你上面看到的代碼之前遞增。我們的想法是,每次按下「下一步」按鈕以移至下一頁時,上面的代碼就會運行。這是上面的代碼導致的問題,因爲它不會接受gY作爲變量。 – user616076

回答

0

如果戈瑞是一個指針(爲float),則需要取消對它的引用,以便訪問它的值:

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

編輯

確保你有一個有效的指針(即,gY指向一個實際的浮點數)。 如果它是一個未初始化的指針,它將不起作用。

你能告訴我們你怎麼得到gY

EDIT 2

我看到你說的那個GY聲明爲:

static float *gY = 0; 

這是一個NULL指針。
你可以不取消引用NULL指針。

當你增加它,你遞增指針(內存地址),而不是價值。 所以你的指針實際上指向了垃圾。

你爲什麼使用指針? 你應該使用:

static float gY = 0; 
+0

如上所示,即使我在它周圍包裝了一個異常處理程序,代碼也會掛在這一行上。 – user616076

+0

請參閱編輯... – Macmade

+0

請參閱編輯2 ...:) – Macmade

1

如果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; 
+0

上面的代碼編譯好了,但它掛在行上float gYValue = * gY; – user616076

0

這是很難解決,因爲你已經發布的代碼量非常小。不過,我有一個想法。如果GX是解決可下面的方法的參數:

爲了解決這個問題,該方法的聲明添加到您的類.h文件。希望這會有所幫助 - 如果不是,請張貼更多的代碼。