cgpointmakeに増分値を割り当てる問題
質問
次のコードを使用して、WebViewを使用してPDFのページを移動しようとしています。
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
期待されるa float
しかし、フロートポインターを手に入れました: float *
デバッグするには、最初に操作を分解して、指された値にアクセスします。
float gYValue = *gY;
float Y = pdfNavigateController.webView.center.y + gYValue;
コードをごくわずかに投稿したため、トラブルシューティングが困難です。しかし、私にはアイデアがあります。 GXがメソッドの引数である場合、ソリューションは次のとおりです。
この問題を修正するために、クラスの.hファイルにメソッドの宣言を追加します。これが役立つことを願っています - そうでない場合は、もう少しコードを投稿してください。