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方法, 所以这里就不用代码演示了, 大家只要知道在多线程循环引用中的一些注意事项就好了


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

  • 相关阅读:
    mas_makeConstraints && mas_remakeConstraints && mas_updateConstraints 用法与注意事项
    iOS特性一 关闭系统日志打印
    React-Native -课后练习
    RN 项目导入WebStorm 组件没有依赖
    React-Native需要css和布局-20160902
    方式 隐藏导航栏
    svn status状态
    spring整合redis
    maven编译跳过TEST
    linux自动登录脚本expect
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4529331.html
Copyright © 2011-2022 走看看