zoukankan      html  css  js  c++  java
  • ios-NSRunLoop以及定时器NSTimer-理解

      [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timeaction:) userInfo:@"liyang" repeats:NO];
           NSTimer *tt= [NSTimer timerWithTimeInterval:1 target:self selector:@selector(timeaction:) userInfo:@"limengxia" repeats:NO];
            [[NSRunLoop currentRunLoop]addTimer:tt forMode:NSDefaultRunLoopMode];
            [[NSRunLoop currentRunLoop]run];
    //NSRunLoop的理解,每一个线程都有一个NSRunLoop对象,然而定时器也是在这个对象上面运行的,当一个线程运行完成了过后,会自动关闭线程,自然NSRunLoop也会被销毁,自然定时器就不会运行,为了不让其线程关闭,用此语句   
    [[NSRunLoop currentRunLoop]run];那么线程就会保持活跃状态(前提是这个线程里面还有需要被执行的东西,比如说定时器,网络请求等(经过测试的,网络请求,GCD也一样),(这可能是一种优化,单凭这句话,还不能将此线程保持活跃,必须有需要执行的东西)),不会被关闭,自然定时器也就能用了,
    [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timeaction:) userInfo:@"liyang" repeats:NO];这么设置的定时器是自动添加到了NSRunLoop中的,
    NSTimer *tt= [NSTimer timerWithTimeInterval:1 target:self selector:@selector(timeaction:) userInfo:@"limengxia" repeats:NO];这个定时器需要手动添加
    [[NSRunLoop currentRunLoop]addTimer:tt forMode:NSDefaultRunLoopMode];

     如果要使定时器精确,最好将这个定时器放到多线程上去,防止线程阻塞,影响定时器的精确度

     CFRunLoopRun();
        CFRunLoopStop(CFRunLoopGetCurrent());
    //最好是成对的出现,这个和上面的维持runloop活跃状态和关掉时一样的,要不然多线程一执行完成就会关掉,这样代理那些就执行不了
    1.这里只记录一些学习笔记 2.这里只记录一些学习心得,如果心得方向有错,请留言 2.这里只记录一些日记(只为提升英语,暂时有点忙,等转行了开始写)
  • 相关阅读:
    64位windows 7下配置TortoiseGit(转)
    linux中fork函数详解(转)
    Socket通信的Python实现
    Socket
    浅谈CSRF攻击方式(转)
    Burpsuite常用模块详解以及渗透测试上的运用
    大佬内网渗透技巧的独白(思路篇)
    CTFcrackTools-V3
    厂商要知道的漏洞防护措施
    如何运用kali-xplico网络取证分析?点开看看吧
  • 原文地址:https://www.cnblogs.com/liyang31tg/p/3662557.html
Copyright © 2011-2022 走看看