美文网首页
RunLoop应用实例

RunLoop应用实例

作者: 暗夜精灵_NightElf | 来源:发表于2017-11-21 15:14 被阅读0次

1.滑动与图片刷新;

当tableview的cell上有需要从网络获取的图片的时候,滚动tableView,异步线程会去加载图片,加载完成后主线程就会设置cell的图片,但是会造成卡顿。可以让设置图片的任务在CFRunLoopDefaultMode下进行,当滚动tableView的时候,RunLoop是在 UITrackingRunLoopMode 下进行,不去设置图片,而是当停止的时候,再去设置图片。

- (void)viewDidLoad {

[superviewDidLoad];

// 只在NSDefaultRunLoopMode下执行(刷新图片)

[self.myImageView performSelector:@selector(setImage:) withObject:[UIImage imageNamed:@""] afterDelay:ti inModes:@[NSDefaultRunLoopMode]];

}

2.常驻子线程,保持子线程一直处理事件

为了保证线程长期运转,可以在子线程中加入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]];

}elseif([self isReady]) {

self.state = AFOperationExecutingState;

[self performSelector:@selector(operationDidStart) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:NO modes:[self.runLoopModes allObjects]];

}

[self.lock unlock];

}

相关文章

  • RunLoop应用实例

    1.滑动与图片刷新; 当tableview的cell上有需要从网络获取的图片的时候,滚动tableView,异步线...

  • iOS知识点(10)RunLoop

    深入理解RunLoop iOS---实例化讲解RunLoop iOS runloop iOS-RunLoop充满灵...

  • runloop

    1.RunLoop的应用Runloop应用 2.深入理解RunLoop 2.动态计算UITableViewCell...

  • RunLoop -- 相关问题的总结

    1、RunLoop在实际场景的应用 RunLoop -- 在实际开发中的应用 2、RunLoop内部实现逻辑 Ru...

  • iOS-runloop相关

    本篇涵盖runloop解释、应用、利用runloop优化程序等. 1.iOS RunLoop漫谈2.RunLoop...

  • RunLoop

    RunLoop思考 讲讲RunLoop,项目中实际应用? RunLoop内部实现逻辑以及数据结构? RunLoop...

  • 实例化讲解RunLoop

    转自此处 实例化讲解RunLoop 之前看过很多有关RunLoop的文章,其中要么是主要介绍RunLoop的基本概...

  • IOS---实例化讲解RunLoop

    实例化讲解RunLoop 之前看过很多有关RunLoop的文章,其中要么是主要介绍RunLoop的基本概念,要么是...

  • RunLoop简介

    目录1. RunLoop简介2. RunLoop的相关类3. RunLoop的应用 1. 什么是RunLoop *...

  • RunLoop介绍

    RunLoop三篇文章:RunLoop介绍篇RunLoop内部调用过程RunLoop应用篇 本篇包括以下内容: R...

网友评论

      本文标题:RunLoop应用实例

      本文链接:https://www.haomeiwen.com/subject/dzlwvxtx.html