2

こんにちは、UIProgressbar を更新するメソッドを作成しようとしています!

問題は、両方の値がメソッド (NSLog 表示値) に正常に到達すると、アプリケーションを実行すると除算操作によって bad_access が生成されることです!!

intValue/inValue のような両方の値から多くのメッセージを試しました...

この問題を解決するのを手伝ってください。NSNumber の値を出力するにはどうすればよいですか

-(void)UpdateProgressbar:(NSNumber *)currentOperationNumer TotalOperationNumber:(NSNumber*)n
{
     NSLog(@" operation : %i",currentOperationNumer);
     NSLog(@" total : %i",n);

     if (currentOperationNumer<=n) 
     {
        [downloadBar setProgress:(currentOperationNumer/n )];
    NSLog(@"progress !");
     }
     else
     {
    [self.view removeFromSuperview];
     }
}
4

5 に答える 5

0

EXC_BAD_ACCESS をデバッグする最良の方法:

  1. XCode 4 を使用していない場合は、アップグレードしてください。
  2. XCode 4 では、CMD-I を押して Instruments を実行します。
  3. ゾンビ プロファイルを選択します。(背景: EXC_BAD_ACCESS は、割り当て解除されたオブジェクトにメッセージを送信していることを意味します。Zombies はゾンビ機能をオンにするため、保持カウントが 0 のオブジェクトは割り当て解除されず、ゾンビとして保持されます。NSZombie クラスは、メッセージが送信されるたびに例外を発生させます。送信されます-したがって、トラップされ、発信元を特定できます。)
  4. Instruments を介してアプリを実行します。クラッシュすると、Instruments が前面に表示され、解放されたがアクセスされたメモリを示すポップアップ コールアウトが表示されます。
  5. 右下隅にある小さな矢印をクリックすると、そのメモリの割り当て/保持/解放の履歴と、アクションを実行するコードが表示されます。ソース列をクリックすると、コード内のその行に移動します。
于 2011-09-23T18:34:34.197 に答える
0

[currentOperationNumber intValue]currentOperationNumber (または setProgress が float を期待する場合は floatValue)の代わりに試してください。そう....

int myProgress = [currentOperationNumber intValue] / [n intValue];
[downloadBar setProgress:myProgress];

実際、そこに期待されるのは float 値ではありませんか?

于 2011-09-23T10:38:42.167 に答える
0

次のコードを使用して値を出力できます

-(void)UpdateProgressbar:(NSNumber *)currentOperationNumer TotalOperationNumber:(NSNumber*)n
{
     NSLog(@" operation : %@",currentOperationNumer);
     NSLog(@" total : %@",n);

     if (currentOperationNumer<=n) 
     {
        [downloadBar setProgress:(currentOperationNumer/n )];
    NSLog(@"progress !");
     }
     else
     {
    [self.view removeFromSuperview];
     }
}
于 2011-09-23T10:53:07.933 に答える
0

NSNumber は、さまざまなプリミティブ型のオブジェクト ラッパーです。ポインタをポインタで除算しようとしています。

多分コードをチェーンしてみてください..

[downloadBar setProgress:([currentOperationNumer intValue] / [n intValue])];
于 2011-09-23T10:46:53.997 に答える
0

downloadBar.progress が float であり、0.0 から 1.0 までであることを確認してください。

これを試してください:

フロート電流 = 0.0f; 浮動小数点数 = 100.0f;

while (stuff..) { downloadBar.progress = current / count; }

問題なく動作するはずです。

于 2012-02-06T02:04:57.627 に答える