zoukankan      html  css  js  c++  java
  • iOS多线程简介

    前面, 我们讲完了 NSOperation 的使用, 现在让我们来看看在 iOS 中得一些多线程开发的注意事项.


    1.Run Loop

    在 iOS 中, 它有一种运行机制, 叫做 Run Loop, 让我们来看看什么是 Run Loop

    1.Run Loop提供了⼀种异步执⾏代码的机制,不能并⾏执⾏任务.
    2.在朱队列中, Main Run Loop直接配合任务的执行, 负责处理 UI 事件, 计时器, 以及其他内核相关事件.
    3.Run Loop的主要目的是保证程序执行的线程不会被系统终止.


    2.Run Loop特点

    1.当有事件发⽣时,Run Loop会根据具体的事件类型通知应⽤程序做出响应
    2.当没有事件发生时,Run Loop会进⼊休眠状态,从⽽达到省电的⽬的
    3.当事件再次发生时,Run Loop会被重新唤醒,处理事件

    主线程和其他线程中的Run Loop
    1.iOS程序的主线程默认已经配置好了Run Loop.
    2.其他线程默认情况下没有设置Run Loop.

    PS: ⼀般在开发中很少会主动创建RunLoop, ⽽通常会把事件添加到RunLoop中

    示意图:
    1

    2


    3.多线程的循环引用

    如果self对象持有操作对象的引⽤,同时操作对象当中又直接访问了self时, 才会造成循环引⽤

    单纯在操作对象中使用self不会造成循环引⽤

    PS: 此时不能使用(weakSelf), 如果使用了 weakSelf, 那么线程就会在没有执行, 或者执行了一部分的时候直接退出.

    PS: 由于 Swift 有非常严格的初始化方法, 并且取消了 OC 中的 dealloc方法, 所以这里就不用代码演示了, 大家只要知道在多线程循环引用中的一些注意事项就好了


    好了, 这次就讲到这里, 下次我们继续~~~

  • 相关阅读:
    0841. Keys and Rooms (M)
    0478. Generate Random Point in a Circle (M)
    0714. Best Time to Buy and Sell Stock with Transaction Fee (M)
    0535. Encode and Decode TinyURL (M)
    1721. Swapping Nodes in a Linked List (M)
    0823. Binary Trees With Factors (M)
    1461. Check If a String Contains All Binary Codes of Size K (M)
    0623. Add One Row to Tree (M)
    1332. Remove Palindromic Subsequences (E)
    0706. Design HashMap (E)
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4529331.html
Copyright © 2011-2022 走看看