Suspicious 'List.remove()' in the loop
List<GPUImageFilter> imageFilterList = imageFilterGroup.getFilters();
for (int i = 0; i < imageFilterList.size(); i++) {
if (imageFilterList.get(i) instanceof GPUImageGaussianBlurFilter) {
imageFilterList.remove(i);
}
}
루프 도중에 삭제할 경우 사이즈와 인덱스 불일치 등이 일어나서 문제의 여지가 있다.
그럴땐 아래와 같이 Iterator를 이용하여 처리하자
List<GPUImageFilter> imageFilterList = imageFilterGroup.getFilters();
Iterator iter = imageFilterList.iterator();
while(iter.hasNext()) {
if(iter.next() instanceof GPUImageGaussianBlurFilter) {
iter.remove();
}
}
No comments:
Post a Comment