在子线程中添加定时器并且时间到后退出runloop-程序员宅基地

//
//  ViewController.m
//  trefeeg
//
//  Created by 张凯泽 on 16/3/30.
//  Copyright  2016年 rytong_zkz. All rights reserved.
//

#import "ViewController.h"
static int count = 10;
@interface ViewController ()
{
    BOOL end1;
    NSThread * thread;
    //NSTimer * timer;
}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
     thread = [[NSThread alloc]initWithTarget:self selector:@selector(threadClick) object:nil];
    [thread start];
     //timer=[NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(timerClick) userInfo:nil repeats:YES];
    
}
-(void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    NSLog(@"touchesEnded");
    [self performSelector:@selector(performClick) onThread:thread withObject:nil waitUntilDone:NO ];
}
-(void)performClick
{
    NSLog(@"performClick");
}
-(void)threadClick
{
    @autoreleasepool {
        NSLog(@"threadClick%@",[NSThread currentThread]);
        NSTimer * timer=[NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(timerClick:) userInfo:nil repeats:YES];
       // NSTimer * timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerClick:) userInfo:nil repeats:YES];
    [timer fire];
    do {
        [[NSRunLoop currentRunLoop ]addTimer:timer forMode:NSDefaultRunLoopMode];
        [[NSRunLoop currentRunLoop]runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
        //[[NSRunLoop currentRunLoop]run];
    
        NSLog(@"____________%@",[NSThread currentThread]);
    }while (!end1);
        NSLog(@"%@",[NSThread currentThread]);

    }
        
}
-(void)timerClick:(NSTimer*)timer
{
    NSLog(@"timerClick%@",[NSThread currentThread]);
    NSLog(@"count = %d",count);
    if (count==0) {
        CFRunLoopStop(CFRunLoopGetCurrent());
        //end1 = YES;
    }
        count--;
    
    
}
@end

 

转载于:https://www.cnblogs.com/zkzzkz/p/5342857.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30287169/article/details/95981696

智能推荐

穷举法求解鸡兔同笼问题_鸡兔同笼python穷举法-程序员宅基地

文章浏览阅读5.5k次,点赞2次,收藏4次。#include#includeusing namespace std;int main(){ //int heads = 23, feet = 60; int heads, feet; cout << "输入头,足的数量" << endl; cin >> heads >> feet; for(int i=0;i<35;i++) for (int j = 0;j<35; j_鸡兔同笼python穷举法

graphpad如何检测方差齐_方差分析中两两多重比较方法的含义及如何正确选择-程序员宅基地

文章浏览阅读4.5k次。欢迎订阅SPSS训练营微信号以SPSS方差分析为例,十多种多重比较方法可选,上图为英文视图,下图为中文翻译视图,请对照学习。简单介绍一下常用的方法它们的含义,以及如何正确恰当选择使用这些方法。LSDLSD:最小显著差异法,实际上是 t 检验的改进,检验统计量为T,在变异和自由度的计算上利用了整个样本信息,而不仅仅是比较两组的信息。它的敏感度最高,在比较时仍然存在放大α水准(一类错误)的问..._graphpad多重比较

Android 音频源码分析——音频设备切换(插入耳机)_usbalsadevice-程序员宅基地

文章浏览阅读5k次,点赞6次,收藏56次。源码分析基于android9.0通常带线耳机分类模拟耳机平时常用的3.5mm或6.3mm接口耳机,接收模拟信号(音频数据需要先处理,转码成pcm格式)Android中模拟耳机由WiredAccessoryManager获取上报的事件,调用AudioService.setWiredDeviceConnectionState传递信息给AudioService,更新设备信息。数字耳机例如USB Type-c耳机,接收数字信号(音频数据不需要解码成pcm,由耳机进行转换)Android中由UsbAl_usbalsadevice

Java知识体系最强总结(2021版)-程序员宅基地

文章浏览阅读2.8k次,点赞6次,收藏55次。学习Java请关注B站 【黑马程序员】Java知识体系主要包括基础知识,工具,并发编程,数据结构与算法,数据库,JVM,架构设计,应用框架,中间件,微服务架构,分布式架构,程序员的一些思考,团队与项目管理,运维,权限,推荐书籍,云计算,区块链等,包含了作为一个Java工程师在开发工作学习中需要用到或者可能用到的绝大部分知识。千里之行始于足下,希望大家根据自己的薄弱点,查缺补漏,根据自己感兴趣的方面多学习,学的精通一点,从现在开始行动起来。路漫漫其修远兮,吾将上下而求索,不管编程开发的路有多么难走,多么艰辛_java知识体系

CEPH -S集群报错汇总_ceph集群health_warn-程序员宅基地

文章浏览阅读2.2k次。问题一:ceph -shealth HEALTH_WARN too many PGs per OSD (320 > max 300)查询当前每个osd下最大的pg报警值:[root@k8s-master01 ~]# ceph --show-config | grep mon_pg_warn_max_per_osdmon_pg_warn_max_pe..._ceph集群health_warn

MATLAB算法实战应用案例精讲-【图像处理】计算机视觉(补充篇)-程序员宅基地

文章浏览阅读370次。任何广角视角或是物理空间的表现都可以概括为全景图(Panorama)。在数字信息尚未发达的时代,全景图绘制是最常用的景观和历史事件的表现手法,下图为Robert Barker于1792年绘制的伦敦全景和北宋画家张择端的清明上河图(部分)。19世纪初,在法国巴黎一家著名歌剧院的首席布景画家达盖尔发明了银版摄影法的不久之后,摄影师们开始尝试集成多张图片来制作宽景图。而在19世纪末的全景相机已可以通过旋转扫描线型图像或是其他机械方式来制作近乎180度的宽景图。

随便推点

深度学习硬件指南(号称最全)_深度学习 硬件选择-程序员宅基地

文章浏览阅读1.7k次。from 机器之心 : http://www.almosthuman.cn/2016/02/04/bqrzz/深度学习计算密集,所以你需要一个快速多核CPU,对吧?还是说买一个快速CPU可能是种浪费?搭建一个深度学习系统时,最糟糕的事情之一就是把钱浪费在并非必需的硬件上。本文中,我将一步步带你了解一个高性能经济系统所需的硬件。研究并行化深度学习过程中,我搭建了一个GPU集群,为此_深度学习 硬件选择

斐波那契数列前20项_短线交易的秘诀——斐波那契数列,数学界的“完美”公式!...-程序员宅基地

文章浏览阅读940次。斐波拉契数列一直被认为是大自然中的神奇异数。它的相邻两项之商趋近黄金分割0.618,与之相关的0.191、0.382和0.500等数字,构成了股市中市场时间和空间计算的重要节点。金融市场的时间和价格服从斐波拉契数列,有时准确率达到十分惊人的程度。斐波拉契数列在股市中的应用:“炒股者都懂数学”,这是华尔街操盘手的一句名言。在许多人眼里,周期是一种玄乎的东西,特别是股市中的一些“神棍”例如李大霄的拙劣...

服务器网站被cc攻击,网站被CC攻击怎么办?宝塔防火墙防CC设置详解-程序员宅基地

文章浏览阅读2k次。网站被cc攻击怎么办?如果是安装了BT宝塔面板的话,可以利用其防火墙进行防CC攻击设置,至少能有效抵挡一波。接下来小编就分享一下BT宝塔防火墙防CC设置详解图文教程。之前也介绍了BT宝塔面板的安全设置等文章,如下:一、防御CC的简介首先要在BT宝塔后台安装Nginx防火墙,企业插件里的Nginx防火墙,进行安装还没安装BT宝塔面板?宝塔服务器面板,一键全能部署及管理,送你3188元礼包,然后进行防..._cc防御设置值

matlab 拉普拉斯锐化函数_DIP第三章图像增强高斯拉普拉斯算子零交叉点-程序员宅基地

文章浏览阅读602次。Welcome​zqsiat.github.io写在前面的老师在布置这道作业题的时候说“这次作业非常简单,比上次第二章的作业简单,不会花太长时间就可以完成。”当时我还真信了,但是,并不简单。吐槽一下,我们老师讲课对我们学生的水平太过自信,有些细节的东西不讲,其中滋味请大家自行脑补。作业内容鉴于LoG算法在历史中的地位,进行较深入的实验研究探讨不同σ对LoG 算法的影响。图像Chapter3_1.p..._matlab有关于图像增强laplaca算子的函数

Linux MTD子系统(二)——mtdblock驱动分析-程序员宅基地

文章浏览阅读3k次,点赞3次,收藏14次。mtdX 和 mtdblockX实际上是同一个设备,mtdX是字符设备,mtdblockX是块设备mtdblockX存在的目的主要是为了挂载存在Flash里面的文件系统(例如yaffs2,jffs2)_mtdblock

NB-IoT使用CoAP协议接入华为IoT平台(NB-IoT项目实战专栏—8)_nbiotcoap-程序员宅基地

文章浏览阅读2.7k次,点赞2次,收藏26次。版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 ..._nbiotcoap