场景:每个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]];