ScrollViewDidScroll导致exc_bad_access代码2错误

时间:2015-02-08 19:58:25

标签: ios objective-c

我有一个提供collectionView的视图控制器。当在collectionView中触摸某些单元格时,它们会将视图加载到屏幕上。一些单元格正好加载它们的视图,而其他单元格崩溃,我在代码的这一部分得到了一个exc_bad_access代码2。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if([_scrollViewDelegate respondsToSelector:@selector(scrollViewDidScroll:)]){
        [_scrollViewDelegate scrollViewDidScroll:scrollView];
    }
}

这是设置scrollView的委托的init方法。

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame collectionViewLayout:[self standardCollectionViewLayout]];
    if(!self.collectionViewLayout)
        self.collectionViewLayout = [self standardCollectionViewLayout];
    self.delegate = self;
    self.dataSource = self;
    self.hasSetLayout = false;
    [self setScrollViewDelegate:self];

    return self;
}

在尝试调试此问题时,我已经合成了delegate属性并设置了单独的setter和getter方法。

-(void)setScrollViewDelegate:(id<UIScrollViewDelegate>)scrollViewDelegate{
    if (scrollViewDelegate != nil){
        _scrollViewDelegate = scrollViewDelegate;
    }
}

-(id<UIScrollViewDelegate>)scrollViewDelegate{
    if (_scrollViewDelegate != nil){
        return _scrollViewDelegate;
    }
    return nil;
}

编辑:刚尝试使用ScrollViewDidEndDragging:WillDecelerate:这个方法不会导致崩溃。

0 个答案:

没有答案