Skip to content

Commit 56cb9c0

Browse files
committed
Site updated: 2025-03-21 09:35:47
1 parent 53ac45b commit 56cb9c0

4 files changed

Lines changed: 6 additions & 15 deletions

File tree

2024/04/28/iOS/深入解析 iOS-RunLoop:事件驱动的核心机制/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
hexoVersion: '6.3.0'
1717
} </script><link rel="alternate" href="/atom.xml" title="布多的博客" type="application/atom+xml">
1818
</head><body><canvas class="fireworks"></canvas><i class="fa fa-arrow-right" id="toggle-sidebar" aria-hidden="true"></i><div id="sidebar" data-display="true"><div class="toggle-sidebar-info text-center"><span data-toggle="切换文章详情">切换站点概览</span><hr></div><div class="sidebar-toc"><div class="sidebar-toc__title">目录</div><div class="sidebar-toc__progress"><span class="progress-notice">你已经读了</span><span class="progress-num">0</span><span class="progress-percentage">%</span><div class="sidebar-toc__progress-bar"></div></div><div class="sidebar-toc__content"><ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%89%8D%E8%A8%80"><span class="toc-number">1.</span> <span class="toc-text">前言</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%BB%80%E4%B9%88%E6%98%AF-Even-Loop"><span class="toc-number">2.</span> <span class="toc-text">什么是 Even Loop</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#RunLoop-%E7%9A%84%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86"><span class="toc-number">3.</span> <span class="toc-text">RunLoop 的工作原理</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#RunLoop-%E7%9A%84%E5%AE%9E%E7%8E%B0%E7%BB%86%E8%8A%82"><span class="toc-number">4.</span> <span class="toc-text">RunLoop 的实现细节</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#RunLoop-%E5%85%A5%E5%8F%A3"><span class="toc-number">4.1.</span> <span class="toc-text">RunLoop 入口</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#RunLoop-%E6%A0%B8%E5%BF%83"><span class="toc-number">4.2.</span> <span class="toc-text">RunLoop 核心</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#RunLoop-%E4%B8%8E-RunLoopMode"><span class="toc-number">5.</span> <span class="toc-text">RunLoop 与 RunLoopMode</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%85%B3%E4%BA%8E-CommonModes"><span class="toc-number">6.</span> <span class="toc-text">关于 CommonModes</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#RunLoop-%E4%B8%8E%E7%BA%BF%E7%A8%8B%E7%9A%84%E5%85%B3%E7%B3%BB"><span class="toc-number">7.</span> <span class="toc-text">RunLoop 与线程的关系</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E8%8B%B9%E6%9E%9C%E5%88%A9%E7%94%A8-RunLoop-%E5%AE%9E%E7%8E%B0%E7%9A%84%E5%8A%9F%E8%83%BD"><span class="toc-number">8.</span> <span class="toc-text">苹果利用 RunLoop 实现的功能</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#AutoreleasePool-%E4%B8%8E-RunLoop"><span class="toc-number">8.1.</span> <span class="toc-text">AutoreleasePool 与 RunLoop</span></a></li></ol></li></ol></div></div><div class="author-info hide"><div class="author-info__avatar text-center"><img src="/images/avatar.jpg"></div><div class="author-info__name text-center">布多</div><div class="author-info__description text-center">前进!前进!!不择手段地前进!!!</div><div class="follow-button"><a target="_blank" rel="noopener" href="https://github.com/internetwei">Follow Me</a></div><hr><div class="author-info-articles"><a class="author-info-articles__archives article-meta" href="/archives"><span class="pull-left">文章</span><span class="pull-right">11</span></a><a class="author-info-articles__tags article-meta" href="/tags"><span class="pull-left">标签</span><span class="pull-right">9</span></a><a class="author-info-articles__categories article-meta" href="/categories"><span class="pull-left">分类</span><span class="pull-right">4</span></a></div><hr><div class="author-info-links"><div class="author-info-links__title text-center">友链</div><a class="author-info-links__name text-center" target="_blank" rel="noopener" href="https://www.coderqi.com/">齐小胖之家</a></div></div></div><div id="content-outer"><div id="top-container" style="background-image: url(/images/backgroundImage.jpg)"><div id="page-header"><span class="pull-left"> <a id="site-name" href="/">布多的博客</a></span><i class="fa fa-bars toggle-menu pull-right" aria-hidden="true"></i><span class="pull-right menus"> <a class="site-page" href="/">首页</a><a class="site-page" href="/tags">标签</a><a class="site-page" href="/categories">分类</a><a class="site-page" href="/archives">归档</a><a class="site-page" href="/about">关于</a></span><span class="pull-right"><a class="site-page social-icon search"><i class="fa fa-search"></i><span> 搜索</span></a></span></div><div id="post-info"><div id="post-title">深入解析 iOS-RunLoop:事件驱动的核心机制</div><div id="post-meta"><time class="post-meta__date"><i class="fa fa-calendar" aria-hidden="true"></i> 2024-04-28</time><span class="post-meta__separator">|</span><i class="fa fa-inbox post-meta__icon" aria-hidden="true"></i><a class="post-meta__categories" href="/categories/iOS/">iOS</a><div class="post-meta-wordcount"><span>字数总计: </span><span class="word-count">3.3k</span><span class="post-meta__separator">|</span><span>阅读时长: 13 分钟</span></div></div></div></div><div class="layout" id="content-inner"><article id="post"><div class="article-container" id="post-content"><blockquote>
19-
<p>由 布多(budo) 发布于 2024-04-28 • 最后更新于 2025-02-27</p>
19+
<p>由 布多(budo) 发布于 2024-04-28 • 最后更新于 2025-03-21</p>
2020
</blockquote>
2121
<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>RunLoop 是 iOS 开发中的一个基础概念,苹果有许多功能都依赖于 RunLoop,例如线程中的自动释放池、NSTimer、系统事件响应、屏幕刷新等。本文将深入剖析 iOS 中 RunLoop 的内部实现细节,帮助你更好地理解这一机制。</p>
2222
<h2 id="什么是-Even-Loop"><a href="#什么是-Even-Loop" class="headerlink" title="什么是 Even Loop"></a>什么是 Even Loop</h2><p>在讨论 RunLoop 之前,先了解一下线程的基本概念。通常,线程执行完一个任务后就会退出,要重新执行任务只能再创建一个新线程。但如果我们希望线程在处理完任务后不退出,而是等待并处理新的任务,就需要一种机制来保持线程的活动状态,这就是 <a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Event_loop">Even Loop</a>(事件循环)。</p>

atom.xml

Lines changed: 3 additions & 9 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)