我有一個應用程序,做了一些後臺處理...更新進度條不是他的主線程調用我用的方法:局部變量會導致間歇性崩潰
dispatch_async(dispatch_get_main_queue(),^{
[self updateProgress];
});
我得到EXEC_BAD_ACCESS在這條線:
int secs=[nowDate timeIntervalSinceDate:startTransmitDate];
繼承人的方法:
-(void)updateProgress
{
[mainProgressBar setProgress:((float)dataOffset/(float)totalToSend)];
NSDate *nowDate=[NSDate date];
int secs=[nowDate timeIntervalSinceDate:startTransmitDate];
if(secs>0){
float bps=(float)dataOffset/(float)secs*(float)8.0;
bps=bps/(float)1024.0; // k
bps=bps/(float)1024.0; // M
if(bpsLabelText){
speedLabel.text=nil;
[bpsLabelText release];
bpsLabelText=nil;
}
bpsLabelText=[NSString stringWithFormat:@"%0.1fMb/s",bps];
[bpsLabelText retain];
speedLabel.text=bpsLabelText;
}
}
StartTransmitDate我在課程實施中聲明...並設置在別處:
startTransmitDate=[NSDate date];
[startTransmitDate retain];
我在這裏錯過了什麼?
順便說一句,不是使用'int'來存儲'secs'變量,而是使用'NSTimeInterval',而不是'double'。 – Abizern
如果你啓用殭屍,你會得到任何錯誤嗎? –