Ошибка при просмотре прокрутки EXC_Breakpoint
Это новая проблема, с которой я сталкивался с тех пор, как обновляю приложение для iOS 7. Каждый раз, когда я запускаю приложение на своем устройстве или симуляторе, я получаю этот код ошибки
RecipeDetailViewController scrollViewDidScroll:]: сообщение отправлено на освобожденный экземпляр 0x15746c40 и оно разбилось.
Я включил NSZombie, и это был код, который он мне дал. До того, как он выдал код exc_bad_access.
Это мой код для ScrollViewDidSCroll
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
// Depending on how far the user scrolled, set the new offset.
// Divide by a hundred so we have a sane value. You could adjust this
// for different effects.
// The larger you number divide by, the slower the shadow will change
float shadowOffset = (scrollView.contentOffset.y/1);
// Make sure that the offset doesn't exceed 3 or drop below 0.5
shadowOffset = MIN(MAX(shadowOffset, 0), 0.6);
//Ensure that the shadow radius is between 1 and 3
float shadowRadius = MIN(MAX(shadowOffset, 0), 0.6);
//apply the offset and radius
self.navigationController.navigationBar.layer.shadowOffset = CGSizeMake(0, shadowOffset);
self.navigationController.navigationBar.layer.shadowRadius = shadowRadius;
self.navigationController.navigationBar.layer.shadowColor = [UIColor blackColor].CGColor;
self.navigationController.navigationBar.layer.shadowOpacity = 0.2;
}
Ответы
Ответ 1
Другое (неэлегантное, imo) решение - установить делегат таблицы на nil на dealloc:
- (void)dealloc {
[_tableView setDelegate:nil];
}
Кажется, это ошибка, но я не могу гарантировать. Я все еще ищу разумное объяснение этому.
Примечание: это, вероятно, относится к любому подклассу UIScrollView, а не только к UITableView.
Ответ 2
Я столкнулся с конкретной ситуацией. Я включил NSZombie, дал мне ту же самую ошибку в ios7.
В viewDidLoad
[self setEdgesForExtendedLayout:UIRectEdgeNone];
Решился мой крах. Вы также можете попробовать из раскадровки отменить выбор Extended Edges
→ Under top bars
.
см. ответ здесь fooobar.com/questions/410091/...
N.B. Мне все еще остается загадкой, почему метод делегата scrollViewDidScroll вызывается даже после dealloc.
Ответ 3
или если вы просматриваете прокрутку таблицы,
- (void)viewWillDisappear:(BOOL)animated
{
_table.delegate = nil;
}
В любом случае его странное уведомление о вызове или что-то подобное на dealloc
![enter image description here]()