UIProgressbar更新方法

时间:2011-09-23 10:36:00

标签: iphone ios uiprogressview uiprogressbar

您好我正在尝试编写一个更新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];
     }
}

5 个答案:

答案 0 :(得分:0)

尝试 [currentOperationNumber intValue] 代替 currentOperationNumber (如果setProgress需要浮点数,则使用floatValue)。所以....

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

实际上,它不是一个预期的浮动值吗?

答案 1 :(得分:0)

NSNumber是各种基本类型的对象包装器,你正在尝试用指针划分指针。

也许尝试将代码链接到..

[downloadBar setProgress:([currentOperationNumer intValue] / [n intValue])];

答案 2 :(得分: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];
     }
}

答案 3 :(得分:0)

调试EXC_BAD_ACCESS的最佳方法:

  1. 如果您不使用XCode 4,请升级。
  2. 在XCode 4中,按CMD-I运行仪器。
  3. 选择Zombies个人资料。 (背景:EXC_BAD_ACCESS表示您正在向解除分配的对象发送消息。僵尸打开僵尸功能,因此保留计数为0的对象不会被解除分配,而是保留为僵尸。每当有消息时,NSZombie类会引发异常发送给它 - 因此它可以被困,并确定原点。)
  4. 通过Instruments运行您的应用。当它崩溃时,仪器将被带到前台,弹出标注指示释放但访问的内存。
  5. 您可以单击右下角的小箭头,这将为您提供内存的alloc / retain / release历史记录以及执行操作的代码。单击源列,它将转到代码中的那一行。

答案 4 :(得分:0)

确保downloadBar.progress是一个浮点数,它从0.0到1.0(含)。

请试试这个:

浮动电流= 0.0f; 浮点数= 100.0f;

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

它应该没有问题。