今天突然用到EnumerateObjectsUsingBlock这个方法,网上搜罗一圈总结如下:
1、遍历是同步的 ,从第一个,到最后一个 ,block里面的对象在执行之后会被释放
2、当设置参数stop为yes时 遍历则会被终止, 即继续执行 ,否则,则会继续遍历 直至遍历结束
3、不会自动开启新的线程,若开发者 默认将代码写在主线程,则在主线程进行遍历, 写在子线程, 则在子线程遍历
4、因为enumerateObjectsUsingBlock每个Block里面都含有一个autoreleasePool,所以遍历大量数据时内存不会暴增,比如遍历相册照片
5、删除数组的时候,请用倒叙,正序会导致两个连在一起的元素无法完全删除
建议:
1、在遍历数组和字典的时候用EnumerateObjectsUsingBlock比较方便
2、对于多线程并发可以用enumerateObjectsWithOptions:usingBlock:或者enumerateObjectsWithOptions:usingBlock
网友评论