场景:每个cell中有一个EGOImageView
问题的现象:在滚动时,无法加载图片;滚动一停止,很快就加载成功。
原理:
- 主线程中一个NSTimer添加在default mode中,当界面上有一些scroll view的滚动频繁发生导致run loop运行在UItraking mode中,从而这个timer没能如期望那般的运行。所以,我们就可以把这个timer加到NSRunLoopCommonModes中来解决(iOS中)。
解决方法:来源
EGOImageLoader/EGOImageLoadConnection.m
line57
- _connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
+ _connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO];
+ [_connection scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
+ [_connection start];
EGOImageLoader/EGOImageLoader.m
line136
- [connection performSelector:@selector(start) withObject:nil afterDelay:0.01];
+ [connection performSelector:@selector(start) withObject:nil afterDelay:0.01 inModes:[NSArray arrayWithObject:NSRunLoopCommonModes]];
本文探讨了在iOS应用中遇到的滚动视图频繁滚动导致图片加载延迟的问题,并介绍了通过将定时器添加到NSRunLoopCommonModes中来解决此问题的方法。通过在图片加载连接中使用定时器并将其添加到公共运行环模式下,可以确保图片加载不受滚动操作的影响,实现快速加载。
1050

被折叠的 条评论
为什么被折叠?



