美文网首页
实现后台常驻线程

实现后台常驻线程

作者: 雷霸龙 | 来源:发表于2021-03-03 17:33 被阅读0次

添加一条用于常驻内存的强引用的子线程,在该线程的RunLoop下添加一个Sources,开启RunLoop。

#import "ViewController.h"

@interface ViewController ()
@property (nonatomic, strong) NSThread * thread;   // 添加强引用的子线程
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    // 创建线程,并调用run1方法执行任务
    self.thread = [[NSThread alloc] initWithTarget:self selector:@selector(run1) object:nil];
    // 开启线程
    [self.thread start];
}


- (void)run1 {
    // 这里写任务
    NSLog(@"------run1------");
    
    // 添加下边两句代码,就可以开启RunLoop,之后self.thread就变成了常驻线程,可随时添加任务,并交于RunLoop处理
    [[NSRunLoop currentRunLoop] addPort:[NSPort port] forMode:NSDefaultRunLoopMode];
    [[NSRunLoop currentRunLoop] run];
    
    // 测试是否开启了RunLoop,如果开启RunLoop,则来不了这里,因为RunLoop开启了循环。
    NSLog(@"未开启RunLoop");
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    // 利用performSelector,在self.thread的线程中调用run2方法执行任务,如果run2执行,则说明self.thread是常驻线程
    [self performSelector:@selector(run2) onThread:self.thread withObject:nil waitUntilDone:NO];
}

- (void)run2 {
    NSLog(@"------run2------");
}


@end

相关文章

  • 实现后台常驻线程

    添加一条用于常驻内存的强引用的子线程,在该线程的RunLoop下添加一个Sources,开启RunLoop。

  • iOS 多线程面试题(NSThread+runloop实现常驻线

    NSThread+runloop实现常驻线程 NSThread在实际开发中比较常用到的场景就是去实现常驻线程。 由...

  • 关于上一篇"RunLoop 学习笔记"存在问

    上一篇中问题, 实现"常驻线程"的方案 上一篇"RunLoop 学习笔记"中是这么介绍常驻线程, 以及对应实现方法...

  • iOS面试问题

    一: iOS常驻线程 二: AFNetWorking 2.0与3.0的区别 三: 当开的后台线程太多, 如何进行内...

  • 常驻线程的实现

    前言 这里只是想做一个记录,方便以后回顾。 其实自己的项目暂时用不到常驻线程这一个知识点,一不小心接触到了这个知识...

  • iOS 多线程

    GCD NSOperation(NSNetWorking和图片异步下载) NSThread (常驻线程的实现) 多...

  • NSThread

    实现线程常驻如何实现?在方法内部开启一个RunLoopThread实现原理?内部 使用pthread_create...

  • 常驻后台

    参考原文 知识点: background 有时我们希望扩展不仅在用户主动发起时(如开启特定页面或点击扩展图标等)才...

  • 浏览器JS运行机制(线程)

    浏览器常驻线程 浏览器的内核是多线程的,它们在内核制控下相互配合以保持同步,一个浏览器至少实现三个常驻线程:jav...

  • 从leveldb中学编码技巧(4)

    leveldb的数据以sst文件形式存储在磁盘上,后台有一个常驻线程进行compaction操作。compacti...

网友评论

      本文标题:实现后台常驻线程

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