Я получаю странное поведение из [NSDate timeIntervalSinceReferenceDate]
.
У меня есть следующая функция:
-(void) insertRow{
NSTimeInterval timeNow = [NSDate timeIntervalSinceReferenceDate];
if (timeNow - secondsSinceTableViewScroll <0.5){
[self insertRow];
return;
}
NSIndexSet *indexSet = [NSIndexSet indexSetWithIndex:[self.itemsToFollow count] - 1];
[self.tableView insertSections:indexSet withRowAnimation:UITableViewRowAnimationAutomatic];
}
, которая является обратным вызовом от ASIHTTPRequest requestFinished
. Если я ставлюТочка останова в коде работает нормально.Если я просто попробую запустить код, я получу exc_bad_access
в строке:
NSTimeInterval timeNow = [NSDate timeIntervalSinceReferenceDate];
secondsSinceTableViewScroll
- это ивар, объявленный в заголовке и установленный так:
secondsSinceTableViewScroll = [NSDate timeIntervalSinceReferenceDate];
Есть идеи, почему я получаю exc_bad_access, когда нет точки останова?
Спасибо
Единственное, что я смог найти
Я проверялвремя, подобное этому:
-(void) insertRow{
end = [NSDate timeIntervalSinceReferenceDate];
if(end-start < 0.05){
[self insertRow];
return;
}
NSIndexSet *indexSet = [NSIndexSet indexSetWithIndex:[self.itemsToFollow count] - 1];
[self.tableView insertSections:indexSet withRowAnimation:UITableViewRowAnimationAutomatic];
}
Я уверен, что где-то написано, что вы не можете иметь взаимные вызовы timeIntervalSinceReferenceDate, и именно поэтому он аварийно завершился (этот вид рекурсивного цикла был довольно плохой идеей).
Так что используйте цикл while или, еще лучше, NSTimer.
Спасибо за помощь, хотя