runloop的基本使用

来源:互联网 发布:java jvm原理 一句话 编辑:程序博客网 时间:2024/06/06 20:56

#import "ViewController.h"


@interface ViewController ()

@property (weak, nonatomic) IBOutletUIImageView *imageView;

@property (nonatomic,strong) NSThread *thread;

@end


@implementation ViewController



- (IBAction)oneBtnClick:(id)sender {

    

  self.thread =   [[NSThreadalloc]initWithTarget:selfselector:@selector(operation1)object:nil];

    [self.threadstart];

}

- (IBAction)twoBtnClick:(id)sender {

    

    [selfperformSelector:@selector(operation2)onThread:self.threadwithObject:nilwaitUntilDone:YES];

}


-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

    //Runloop的自动释放池子

    /*

     第一次创建:启动的时候

     最后一次销毁:退出

     其他:

        runloop即将进入休眠状态的时候会销毁,重新创建一个空的自动释放池

     */

    NSLog(@"---start0----");

    /*

    //添加在runloop的默认运行模式下面的

    [self.imageView performSelector:@selector(setImage:) withObject:[UIImage imageNamed:@"Snip20151127_133"] afterDelay:2.0 inModes:@[NSDefaultRunLoopMode,UITrackingRunLoopMode]];

     */

}


-(void)operation1

{

//    while (1) {

        NSLog(@"op1---%@",[NSThreadcurrentThread]);

//    }

    

    //开启runloop

    //创建子线程对应的runloop

    NSRunLoop *runloop = [NSRunLoopcurrentRunLoop];

    

//    [runloop addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode];

   NSTimer *timer =  [NSTimertimerWithTimeInterval:2.0target:selfselector:@selector(test)userInfo:nilrepeats:YES];

    [runloop addTimer:timer forMode:NSDefaultRunLoopMode];

    //默认是没有开启的,需要手动开启

    [runloop run];

    

    //runloop要运行起来,mode里面至少要有一个source或者是timer

    

    NSLog(@"---end----");

}


-(void)operation2

{

    NSLog(@"op2---%@",[NSThreadcurrentThread]);

}


-(void)test

{

    NSLog(@"---test---");

}

@end


0 0
原创粉丝点击