我有一个提供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:这个方法不会导致崩溃。