RunLoop应用场景
来源:互联网 发布:ubuntu命令行中文 编辑:程序博客网 时间:2024/05/01 02:34
- 滑动与图片刷新;
当tableview的cell上有需要从网络获取的图片的时候,滚动tableView,异步线程会去加载图片,加载完成后主线程就会设置cell的图片,但是会造成卡顿。可以让设置图片的任务在CFRunLoopDefaultMode下进行,当滚动tableView的时候,RunLoop是在 UITrackingRunLoopMode 下进行,不去设置图片,而是当停止的时候,再去设置图片。
- (void)viewDidLoad { [super viewDidLoad]; // 只在NSDefaultRunLoopMode下执行(刷新图片) [self.myImageView performSelector:@selector(setImage:) withObject:[UIImage imageNamed:@""] afterDelay:ti inModes:@[NSDefaultRunLoopMode]]; }
- 常驻子线程,保持子线程一直处理事件
为了保证线程长期运转,可以在子线程中加入RunLoop,并且给Runloop设置item,防止Runloop自动退出。
+ (void)networkRequestThreadEntryPoint:(id)__unused object { @autoreleasepool { [[NSThread currentThread] setName:@"AFNetworking"]; NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; [runLoop addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode]; [runLoop run]; }}+ (NSThread *)networkRequestThread { static NSThread *_networkRequestThread = nil; static dispatch_once_t oncePredicate; dispatch_once(&oncePredicate, ^{ _networkRequestThread = [[NSThread alloc] initWithTarget:self selector:@selector(networkRequestThreadEntryPoint:) object:nil]; [_networkRequestThread start]; }); return _networkRequestThread;}- (void)start { [self.lock lock]; if ([self isCancelled]) { [self performSelector:@selector(cancelConnection) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:NO modes:[self.runLoopModes allObjects]]; } else if ([self isReady]) { self.state = AFOperationExecutingState; [self performSelector:@selector(operationDidStart) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:NO modes:[self.runLoopModes allObjects]]; } [self.lock unlock];}
0 0
- RunLoop应用场景
- 多线程 - 13.RunLoop应用场景
- RunLoop 总结:RunLoop的应用场景(一)
- RunLoop 总结:RunLoop的应用场景(二)
- RunLoop总结:RunLoop的应用场景(三)
- RunLoop总结:RunLoop的应用场景(四)
- RunLoop总结:RunLoop的应用场景(五)
- RunLoop 总结:RunLoop的应用场景(二)
- RunLoop总结:RunLoop的应用场景(三)
- RunLoop 总结:RunLoop的应用场景(一)
- RunLoop 总结:RunLoop的应用场景(二)
- RunLoop总结:RunLoop的应用场景(四)
- RunLoop总结:RunLoop的应用场景(五)
- ios开发--RunLoop的应用场景(一)
- ios开发--RunLoop的应用场景(二)
- ios开发--RunLoop的应用场景(三)
- ios开发--RunLoop的应用场景(四)
- ios开发--RunLoop的应用场景(五)
- 会话跟踪
- httpclient 4.5.1---高级主题
- 第69课:Spark SQL通过Hive数据源JOIN实战 每天晚上20:00YY频道现场授课频道68917580
- shiro入门8:Shiro前几章复习
- 深入理解JavaScript系列(二): 原型、原型链与继承
- RunLoop应用场景
- MFC-自定义消息
- JVM运行时数据区域
- Java客户端与C++服务器端通信
- httpclient 4.5.1---连接管理器
- nginx信号控制
- smdk210 uboot移植
- 事务(Transaction)
- angular 双向绑定原理