美文网首页
三十六、Runloop之(五)Runloop的实际应用

三十六、Runloop之(五)Runloop的实际应用

作者: yqc5521 | 来源:发表于2019-05-12 11:25 被阅读0次
Runloop的实际应用

1. 应用1-线程保活。

自定义持久性子线程

#import "CustomPermanantThread.h"
@interface CustomPermanantThread()
@property (nonatomic,strong) NSThread *thread;
@end
@implementation CustomPermanantThread
- (instancetype)init
{
    self = [super init];
    if (self) {
        self.thread = [[NSThread alloc] initWithBlock:^{
            //初始化source上下文
            CFRunLoopSourceContext context = {0};
            //创建source
            CFRunLoopSourceRef source = CFRunLoopSourceCreate(kCFAllocatorDefault, 0, &context);
            //runloop里添加source
            CFRunLoopAddSource(CFRunLoopGetCurrent(), source, kCFRunLoopDefaultMode);
            //释放source
            CFRelease(source);
            //运行runloop
            CFRunLoopRunInMode(kCFRunLoopDefaultMode, 1.0e10, false);
        }];
        [self.thread start];
    }
    return self;
}

- (void)excuteDataTask:(TaskBlock)task{
    if (self.thread == nil) return;
    [self performSelector:@selector(__excuteTask:) onThread:self.thread withObject:task waitUntilDone:NO];
}

- (void)stop {
    if (self.thread == nil) return;
    [self performSelector:@selector(__stop) onThread:self.thread withObject:nil waitUntilDone:YES];
}

- (void)__stop {
    CFRunLoopStop(CFRunLoopGetCurrent());
    self.thread = nil;
}

- (void)__excuteTask:(TaskBlock)task{
    if (task != nil) {
        task();
    }
}

- (void)dealloc{
    [self stop];
}
@end

相关文章

  • 三十六、Runloop之(五)Runloop的实际应用

    1. 应用1-线程保活。 自定义持久性子线程

  • RunLoop -- 相关问题的总结

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

  • RunLoop

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

  • iOS Runloop底层详解

    一 什么是Runloop 二 Runloop的运行逻辑 三 Runloop在实际开发中的应用 一 什么是Runlo...

  • RunLoop 三 : 使用RunLoop线程保活的封装

    在RunLoop 二 : RunLoop在实际中的应用篇幅中我们介绍了runloop在项目中的具体用法,并且创建了...

  • iOS 常见面试题--runloop

    一、什么是runloop 二、runloop的基本作用 三、应用范畴 四、runloop与线程之间的关系 五、Ru...

  • Runloop的实际应用

    1. 使用定时器 2. 延迟执行 列表上的图片在列表滑动的时候不进行加载 3. 线程保活 4. 监听卡顿 iOS开...

  • 10.3 runloop 的实际应用

    runloop实际中的应用 控制线程生命周期(线程保活)、崩溃的起死回生 runloop和performselec...

  • RunLoop

    RunLoop RunLoop概述 什么是RunLoop RunLoop从字面意思看是运行循环,跑圈的意思,实际苹...

  • runloop

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

网友评论

      本文标题:三十六、Runloop之(五)Runloop的实际应用

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