码迷,mamicode.com
首页 > 编程语言 > 详细

线程NSThread的使用

时间:2016-08-15 00:02:55      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

//
//  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

 

线程NSThread的使用

标签:

原文地址:http://www.cnblogs.com/ningmengcao-ios/p/5771204.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!