zoukankan      html  css  js  c++  java
  • iOS开发开辟线程总结--NSThread

    1、简介:

    1.1 iOS有三种多线程编程的技术,分别是:

    1.、NSThread 

    2、Cocoa NSOperation (iOS多线程编程之NSOperation和NSOperationQueue的使用

    3、GCD  全称:Grand Central Dispatch( iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用

    这三种编程方式从上到下抽象度层次是从低到高的,抽象度越高的使用越简单,也是Apple最推荐使用的。

    这篇我们主要介绍和使用NSThread,后面会继续2、3 的讲解和使用。

    1.2 三种方式的有缺点介绍:

    NSThread:

    优点:NSThread 比其他两个轻量级

    缺点:需要自己管理线程的生命周期,线程同步。线程同步对数据的加锁会有一定的系统开销

    NSThread创建的两种方式:

    从以下代码可以看到 NSThread 是并发同步执行

    - (void)viewDidLoad {
        [super viewDidLoad];
    
        [NSThread detachNewThreadSelector:@selector(myThread) toTarget:self withObject:nil];
        NSLog(@"234");
    }
    
    -(void)myThread
    {
        sleep(5);
        NSLog(@"123");
    }
    2.
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        NSThread * maThread = [[NSThread alloc] initWithTarget:self selector:@selector(myThread) object:nil];
        [maThread start];
        NSLog(@"234");
    }
    
    -(void)myThread
    {
        sleep(5);
        NSLog(@"123");
    }

    第一种方式会直接创建线程并且开始运行线程,第二种方式是先创建线程对象,然后再运行线程操作,在运行线程操作前可以设置线程的优先级等线程信息

    2.4.2线程间通讯

    线程下载完图片后怎么通知主线程更新界面呢?

    [self performSelectorOnMainThread:@selector(updateUI:) withObject:image waitUntilDone:YES];

    performSelectorOnMainThread是NSObject的方法,除了可以更新主线程的数据外,还可以更新其他线程的比如:

    用:performSelector:onThread:withObject:waitUntilDone: 

  • 相关阅读:
    MemCached总结二:数据管理指令
    MemCached总结一:Unbutu操作系统下memcached服务器安装和telnet方式连接memcache
    Laravel5 开启Debug
    状压dp
    树形dp
    区间dp
    线性dp
    背包九讲
    dp求解各种子串子序列
    线段树详解
  • 原文地址:https://www.cnblogs.com/WJJ-Dream/p/5809235.html
Copyright © 2011-2022 走看看