-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path14772238190367.html
154 lines (116 loc) · 6.01 KB
/
14772238190367.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
<!DOCTYPE html>
<html>
<head>
<title>
GCD遇到的的一些坑 - 咕噜灵波
</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="肥宅炼丹术士的日常">
<!-- 魔改部分 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="asset/style.css">
<link rel="stylesheet" type="text/css" href="asset/cuckoo.css">
<link rel="stylesheet" type="text/css" href="asset/main.css">
<link rel="stylesheet" type="text/css" href="asset/atom-one-light.css">
<link rel="alternate" type="application/atom+xml" href="atom.xml" title="咕噜灵波">
<script src="asset/highlight.pack.js"></script>
<!-- <script>hljs.initHighlightingOnLoad();</script>-->
</head>
<body>
<header class="site-header cuckoo">
<div class="wrapper">
<a class="site-title" href="index.html">咕噜灵波</a>
<nav class="site-nav">
<a href="#" class="menu-icon">
<svg viewBox="0 0 18 15">
<path fill="#424242"
d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z">
</path>
<path fill="#424242"
d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z">
</path>
<path fill="#424242"
d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z">
</path>
</svg>
</a>
<div class="trigger">
<a class="page-link" href="index.html">Home</a>
<a class="page-link" href="archives.html">Archives</a>
</div>
</nav>
</div>
</header>
<script src="./asset/live2d/autoload.js"></script>
</body>
</html> <div class="page-content cuckoo">
<div class="pattern-center ">
<div id="surpriseImg" class="pattern-attachment-img">
<!-- <img src="suprizeImg#lazyload-blur" data-src="suprizeImg" class="lazyload"
onerror="imgError(this,3)" style="width: 100%; height: 100%; object-fit: cover; pointer-events: none;"> -->
</div>
<header class="pattern-header ">
<h1 class="entry-title">GCD遇到的的一些坑</h1>
</header>
</div>
<div class="wrapper">
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">
<header class="post-header">
<!-- <h1 class="post-title" itemprop="name headline">GCD遇到的的一些坑</h1> -->
<div class="post-description">
</div>
</header>
<div class="post-content" itemprop="articleBody">
<ol>
<li>在项目中一般是将耗时操作放在后台线程,在后台线程执行完毕后,在主线程刷新 UI 界面。<br/>
因此,可以在全局队列(串行队列)中异步执行耗时的代码,然后串行刷新UI。</li>
</ol>
<pre><code class="language-text">// 获取一个全局队列, 在全局队列异步操作
DispatchQueue.global().async {
Thread.sleep(forTimeInterval: TimeInterval(3)) //此处是耗时的代码
NotificationCenter.default.post(name: NSNotification.Name("ExamDidLoad"), object: nil) //注意,ExamDidLoad是对UI的操作,一定要跳到主线程处理!!!
// 主线程异步执行(主线程同步可能会死锁),与前面的操作是串行关系
DispatchQueue.main.async(execute: {
UIView.animate(withDuration: 3) {
self.view.alpha = 0.5
}
})
}
</code></pre>
<p>要注意的是,在多线程程序中,通知总是在发送通知者的线程中调用。下面是官方文档中的说法:</p>
<blockquote>
<p>In a multithreaded application, notifications are always delivered in the thread in which the notification was posted, which may not be the same thread in which an observer registered itself.</p>
</blockquote>
<p>因此,当我们在子线程中发送通知,让通知接受者进行UI操作时,就要十分小心:UI操作必须在主线程执行,否则容易崩溃!</p>
</div>
<div>
</div>
</article>
</div>
</div>
<script src="asset/jquery-3.3.1.min.js"></script>
<script>
$(document).ready(function () {
$('#footer').show()
})
/** 生成1-4的随机图片标签 **/
function getRandomImage() {
var index = Math.ceil(Math.random() * 10) % 4;
var path = './asset/banner/' + index + '.jpg'
// return '<img src="/' + index + '.jpg" >';
return '<img src="' + path + '#lazyload-blur" data-src="' + path +
'" class="lazyload" onerror="imgError(this,3)" style="width: 100%; height: 100%; object-fit: cover; pointer-events: none;">'
}
/** 根据传进来的元素id,追加一个随机图片并显示 **/
function showRandonImage(divId) {
var oldHTML = document.getElementById(divId).innerHTML;
var newHTML = oldHTML + getRandomImage();
document.getElementById(divId).innerHTML = newHTML;
}
showRandonImage('surpriseImg');
</script> <footer id="footer" class="cuckoo page-footer" style="display: none">
<div class="wrapper">
<p>This blog is maintained by TSERR0F</a></p>
</div>
</footer>