использование завершения с animateWithDuration вызывает exc_bad_access

Я пытаюсь анимировать 2 UIButtons в UITableViewCell, называемом addToPlaylist и removeFromPlayList (они анимируются вправо после того, как их прокрутили), и я использую блок следующим образом

[UIView animateWithDuration:0.25 animations:^{

    self.addToPlaylist.center      = CGPointMake(contentsSize.width + (buttonSize.width / 2), (buttonSize.height / 2));
    self.removeFromPlaylist.center = CGPointMake(contentsSize.width + (buttonSize.width / 2), (buttonSize.height / 2));
    myImage.alpha = 1.0;

}
 completion:^ (BOOL finished) 
 {
     if (finished) {
         // Revert image view to original.
         NSLog(@"Is completed");
         self.addToPlaylist.hidden       = YES;
         self.removeFromPlaylist.hidden  = YES;
         self.hasSwipeOpen               = NO;
     }
 }];

по завершении я хочу скрыть кнопки, чтобы попытаться уменьшить перерисовку при прокрутке и т. д.

Этот код находится внутри '-(void) swipeOff', который вызывается в методе scrollViewWillBeginDragging UITableViewControllers следующим образом:

- (void)scrollViewWillBeginDragging:(UIScrollView *) scrollView
{
   for (MediaCellView* cell in [self.tableView visibleCells]) {
        if (cell.hasSwipeOpen) {
           [cell swipeOff];
        }
    }
}

Проблема заключается в коде завершения, если я удалю его или установлю на ноль, все будет хорошо, если я включу его, я получу EXC_BAD_ACCESS. даже если я включу его с любой или всеми строками в if(finished) закомментирован

Я использую это неправильно, любая помощь очень ценится.

Спасибо


person craigk    schedule 11.05.2011    source источник
comment
Если вы опустите назначения и сохраните NSLog, будет ли код работать без сбоев? Это всегда происходит сбой или только при прокрутке таблицы?   -  person Nick Weaver    schedule 11.05.2011
comment
Привет, Ник, он все равно будет падать только с NSLog, и это только при прокрутке tableView   -  person craigk    schedule 11.05.2011


Ответы (2)


У меня была такая же проблема с анимацией. Я решил это, удалив -weak_library /usr/lib/libSystem.B.dylib из других флагов компоновщика.

Кроме того, согласно этот ответ, если вам нужен этот флаг, вы можете заменить его на -weak-lSystem.

person ivanzoid    schedule 10.06.2011
comment
спасибо приятель, я отказался от этого. Мне пришлось использовать -weak-lSystem, но это избавило от сбоя/ошибки. +1 за ссылки - person craigk; 14.06.2011

Проверьте, не вызываете ли вы UIView (коллекциюView, Mapview и т. д.) из блока UIView, то есть это будет вызов вне основного потока. Если да, попробуйте следующее:

DispatchQueue.main.async {
self.mapBoxView.setZoomLevel(self.FLYOVERZOOMLEVEL, animated: true
)}
person TDesign    schedule 11.04.2019