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: 

  • 相关阅读:
    解除win7系统静音
    temp--test audio micphone
    2015年年中总结
    通过对象成员地址求对象本身地址
    管理全局对象
    UTF-8 <==> unicode(WCHAR)
    [HEOI2016/TJOI2016]树
    P2382 化学分子式
    [PKUWC2018]Slay the Spire
    [Ynoi2019模拟赛]Yuno loves sqrt technology III
  • 原文地址:https://www.cnblogs.com/WJJ-Dream/p/5809235.html
Copyright © 2011-2022 走看看