1

次のコードを使用して、webView を使用して Pdf のページを移動しようとしています。

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

値 gY も float であり、ユーザーが次のページを選択するとインクリメントされます。コードは現在、「バイナリ式 ('CGFloat' (別名 'float') および 'float *') のオペランドが無効です」というエラーをスローしています。値がポインターであるため、オペランドが無効であると推測していますが、このエラーを発生させずにインクリメントされた値を渡す方法がわかりません。

4

3 に答える 3

1

gYフロート使用へのポインタである場合*gY

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

エラー rmessage:('CGFloat' (aka 'float') and 'float *') は、 a をCGFloat期待してfloatいたが float ポインターを取得したことを示しています。float *

デバッグの場合、最初に操作を分割して、指定された値にアクセスします。

float gYValue = *gY;
float Y = pdfNavigateController.webView.center.y + gYValue;
于 2011-11-30T12:28:38.520 に答える
0

gY が (float への) ポインターである場合、その値にアクセスするには逆参照する必要があります。

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

編集

有効なポインターがあることを確認してください (つまり、gY は実際の float を指します)。初期化されていないポインターの場合、機能しません。

入手方法を教えてくださいgY

編集2

gY が次のように宣言されているとあなたが言ったのを見てきました。

static float *gY = 0;

それはNULLポインタです。
また、NULL ポインターを逆参照することはできません。

インクリメントすると、値ではなくポインター (メモリ アドレス) がインクリメントされます。したがって、ポインタは実際にはガベージを指しています。

なぜポインタを使うのですか?以下を使用する必要があります。

static float gY = 0;
于 2011-11-30T12:29:17.053 に答える
0

非常に少量のコードを投稿したため、トラブルシューティングが困難です。しかし、私には考えがあります。gX がメソッドの引数である場合、解決策は次のようになります。

この問題を解決するには、メソッドの宣言をクラスの .h ファイルに追加します。これが役立つことを願っています-そうでない場合は、さらにコードを投稿してください。

于 2011-11-30T12:31:18.937 に答える