iOS知识点(二)

作者: MyLee | 来源:发表于2018-03-30 09:11 被阅读13次
一.runloop跟线程的关系
  1. runloop是为线程而生,每一个线程会对应一个runloop;
  2. 主线程runloop默认是开启的,子线程runloop需要手动开启;
    3.可通过以下方式开启一条常驻线程:
NSRunLoop * runloop = [NSRunLoop currentRunLoop];
[runloop addPort:[NSPort port] forMode:NSDefaultRunLoopMode];
[runloop run];
二. 线程之间的通信

1.GCD,一般用于UI更新

dispatch_async(dispatch_get_main_queue(), ^{
    //主线程操作UI更新
});
  1. performSelector
    a) performSelectorOnMainThread: withObject: waitUntilDone://切回主线程操作
    b) performSelectorInBackground: withObject: //切换到后台线程
    c) performSelector: onThread: withObject: waitUntilDone://切换到自定义子线程
  2. NSOperation
    [NSOperationQueue mainQueue] addOperationWithBlock: ^{}
三. 线程锁有几种

1 NSLock
2 synchronized代码块
3 GCD的 dispatch_semaphore_t(条件信号量)和dispatch_barrier_async/dispatch_barrier_sync;
4 NSCondition 使用其做多线程之间的通信调用不是线程安全的
5 NSConditionLock 单纯加锁性能非常低,比NSLock低很多,但是可以用来做多线程处理不同任务的通信调用
6 POSIX(pthread_mutex) 底层的api,复杂的多线程处理建议使用,并且可以封装自己的多线程
7 NSRecursiveLock 递归锁的性能出奇的高,但是只能作为递归使用,所以限制了使用场景

相关文章

  • iOS 常用到的知识点(一)

    iOS 常用到的知识点(一)iOS 常用到的知识点(二)iOS 常用到的知识点(三) 1. CGRectGetM...

  • iOS 常用到的知识点(三)

    iOS 常用到的知识点(一)iOS 常用到的知识点(二)iOS 常用到的知识点(三) 1. navigationB...

  • iOS 常见知识点(一):Runtime

    iOS 常见知识点(二):RunLoop iOS 常见知识点(三):Lock Runtime Runtime 是一...

  • iOS 常用到的知识点(二)

    iOS 常用到的知识点(一)iOS 常用到的知识点(二)iOS 常用到的知识点(三) 1.延迟加载: 2.布尔值存...

  • iOS零碎知识点<高阶版>

    iOS零碎知识点<初级版>iOS零碎知识点<中阶版>iOS零碎知识点<高阶版>iOS零碎知识点<工具篇>

  • iOS零碎知识点<工具篇>

    iOS零碎知识点<初级版>iOS零碎知识点<中阶版>iOS零碎知识点<中阶版>iOS零碎知识点<工具篇>

  • iOS零碎知识点<中阶版>

    iOS零碎知识点<初级版>iOS零碎知识点<中阶版>iOS零碎知识点<高阶版>iOS零碎知识点<工具篇> 获取属性...

  • iOS零碎知识点<初级版>

    iOS零碎知识点<初级版>iOS零碎知识点<中阶版>iOS零碎知识点<高阶版>iOS零碎知识点<工具篇> 优雅的隐...

  • iOS 题目详解 部分一

    主要记录一些题目所关联的知识点, 详解 iOS 题目详解 部分一iOS 题目详解 部分二iOS 题目详解 部...

  • iOS 题目简述 部分一

    主要记录一些题目所关联的知识点, 简单概述 iOS 题目详解 部分一iOS 题目详解 部分二iOS 题目详解...

网友评论

本文标题:iOS知识点(二)

本文链接:https://www.haomeiwen.com/subject/anotqftx.html