zoukankan      html  css  js  c++  java
  • 线程NSThread的使用

    //
    //  ZYThreadViewController.h
    //  Thread
    //
    //  Created by yejiong on 15/11/4.
    //  Copyright © 2015年 zzz. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    
    @interface ZYThreadViewController : UIViewController
    
    @end
    //
    //  ZYThreadViewController.m
    //  Thread
    //
    //  Created by yejiong on 15/11/4.
    //  Copyright © 2015年 zzz. All rights reserved.
    //
    
    #import "ZYThreadViewController.h"
    
    @interface ZYThreadViewController ()
    
    @end
    
    @implementation ZYThreadViewController
    
    - (void)viewDidLoad {
        self.view.backgroundColor = [UIColor whiteColor];
        
        if ([NSThread isMainThread]) {
            NSLog(@"主线程");
        }else {
            NSLog(@"分线程");
        }
    }
    
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
        //1.在分线程中执行 target 的 selector 方法,传入一个参数 argument。
    //    NSThread* thread = [[NSThread alloc] initWithTarget:self selector:@selector(run:) object:@"123"];
    //
    //    [thread start];
    //    
    //    [thread release];
        
        //2.创建并开启一个分线程。
    //    [NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"789"];
        
        //3.隐式的创建一个分线程执行 selector 方法。
        [self performSelectorInBackground:@selector(run:) withObject:@"000"];
    }
    
    //以前在分线程中需要我们自己去创建 NSAutoreleasePool 释放在分线程中使用的 autorelease 变量,现在没有这个限制了。
    - (void)run:(id)object {
        NSLog(@"%@", object);
    
        //设置线程休眠多少秒。
    //    [NSThread sleepForTimeInterval:1.0];
        
        //使线程休眠到某个时间。
    //    [NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.0]];
    
        if ([NSThread isMainThread]) {
            NSLog(@"主线程");
        }else {
            NSLog(@"分线程");
        }
        
        //回到主线程执行 方法调用者 的 selector 方法。
        [self performSelectorOnMainThread:@selector(mainThreadLog:) withObject:@"456" waitUntilDone:NO];
        //wait
        //YES,等待 selector 方法中的内容执行完毕在继续执行分线程中的内容,阻塞当前线程。
        //NO,不等待,两者同时执行,并发执行。
        
        NSLog(@"----------");
        NSLog(@"----------");
        NSLog(@"----------");
        NSLog(@"----------");
        NSLog(@"----------");
        NSLog(@"----------");
        NSLog(@"----------");
        NSLog(@"----------");
    }
    
    - (void)mainThreadLog:(id)objcet {
        NSLog(@"%@", objcet);
        
        if ([NSThread isMainThread]) {
            NSLog(@"主线程");
        }else {
            NSLog(@"分线程");
        }
    }
    
    
    
    @end
  • 相关阅读:
    CVS是版本控制
    AMD CPU 看清楚
    亚洲卫视 > 技术讲义
    Windows下安装APM大全
    Windows Server 2003的几个奇怪的设置问题
    TortoiseCVS 简明流程实例
    MESSAGEBOX() 函数
    用于多表更新
    H1B签证问题
    一些好的表格
  • 原文地址:https://www.cnblogs.com/ningmengcao-ios/p/5771204.html
Copyright © 2011-2022 走看看