У меня есть приложение, которое выполняет некоторую фоновую обработку ... чтобы обновить индикатор выполнения, а не основной поток, я вызываю метод, используя:
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];
Что мне здесь не хватает?