iOS 知识杂记

一、注释快捷键

以前用VVDocumenter做注释 “///”,现在Xcode8以上是快捷键为 option+command+/,如下图:
效果图

二、cell加载图片的操作

现在有这样一个场景,有一个tableview,每个cell上都有imageView,imageView要加载图片,用户在滑动列表的时候,如果随滑随加载图片的话,列表会非常卡顿,验证影响用户体验。这个时候应该怎么优化呢?

方法一:利用UIScrollView的代理方法。

在tableView滑动的过程中不加载图片,等停止滑动时再加载当前可见cell上的图片。这种方法是比较容易想到的优化方式,但是实现起来比较麻烦,要判断是否拖动,是否正在减速等条件,要在多个方法中做相应的设置,具体细节实现网上也有很多,大家可以自行查找,不在这里赘述。这种虽然也能实现优化,但就是感觉非常的笨重,那有没有更简便的方法,答案当然是有,什么?你就想一行代码实现?哈哈,这个当然也是so easy!

方法二:利用runloop的特性。(极为简单)
UIImage *cellImg = ...;
[self.imgView performSelector:@selector(setImage:) withObject:cellImg afterDelay:0 inModes:@[NSDefaultRunLoopMode]];

它的意思就是将设置图片的操作放在Default Mode的runloop中,因为tableview在滑动时,所在的runloop的mode为UITrackingRunLoopMode,这是两种完全不同的Mode,且水火不容。滑动时,只会执行设置为UITrackingRunLoopMode的runloop,故而设置为NSDefaultRunLoopMode的runloop就不会执行,只有停止滑动的时候才会自动切换到NSDefaultRunLoopMode,这时就会去设置图片了。

猜你喜欢

转载自blog.csdn.net/xiaoxiaocode/article/details/80419737
今日推荐