2013-09-13 2 views
13

Это новая проблема, я был с тех пор, как я обновить мое приложение для IOS 7. Everytime я запустить приложение на устройстве или тренажере, я получаю этот код ошибкиКраш на EXC_Breakpoint Scroll View

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; 
} 

ответ

7

я столкнулся точную ситуацию. Я включил NSZombie, дал мне ту же самую ошибку в ios7.

В viewDidLoad

[self setEdgesForExtendedLayout:UIRectEdgeNone]; 

решаемые мой крах. Вы также можете попробовать с раскадровки отказаться от Extended Edges >>Under top bars.

увидеть ответ здесь https://stackoverflow.com/a/18892358/1378447

нотабене По-прежнему остается загадкой для меня, почему метод делегата scrollViewDidScroll вызывается даже после dealloc.

+0

Это на самом деле работает для меня. Благодаря! – Isuru

22

Другой (безвкусный, IMO) решение установить делегата Вашей таблицы к нулю на dealloc:

- (void)dealloc { 
    [_tableView setDelegate:nil]; 
} 

Кажется, ошибка, но я не могу гарантировать. Я все еще ищу разумное объяснение этому.

Примечание: это, вероятно, относится к любому подклассу UIScrollView, а не только к UITableView.

+1

Вы спасатель жизни. – Reaper

+1

Это абсолютно правильный ответ !!! Я обнаружил, что установка 'delegate = nil' была решением, но пыталась поместить ее в' viewWill/DidDissappear' и в других тоннах мест ... это спасло мой день! – Merlevede

1

или если вы наблюдая за табличную прокрутку

- (void)viewWillDisappear:(BOOL)animated 
{ 
    _table.delegate = nil; 
} 

Во всяком случае его странного называть уведомление или что-то подобное на dealloc enter image description here