回答編集履歴
3
スレッドに関係なく、純粋に同期処理と非同期処理に関しての言及に修正
answer
CHANGED
@@ -1,27 +1,31 @@
|
|
1
1
|
ざっくり簡単に説明します。
|
2
2
|
|
3
3
|
# 同期処理
|
4
|
-
同期処理は、
|
4
|
+
同期処理は、順番通り(だいたいの言語は上の行から)直列で順番に処理が行われることです。
|
5
5
|
ある処理が先に走ったとき、その処理が終了するまで、次の処理は実行されません。
|
6
6
|
だいたいの言語で、普通に処理を書けば、この同期処理になります。
|
7
7
|
変数の値保証が基本的にされるので、
|
8
8
|
非同期にしたいなど特に無ければ、同期処理のままにするのが基本です。
|
9
9
|
|
10
10
|
# 非同期処理
|
11
|
-
メインの
|
11
|
+
メインの処理が動きつつも、並行して実行させる処理です。
|
12
|
-
ゆえに、メインの
|
12
|
+
ゆえに、メインの処理が実行されてる間に、同時に処理を進めることができるので、
|
13
13
|
重い処理をバックグラウンド(非同期)で実行させることにより、
|
14
14
|
メインの処理、表示に影響を出さずにいれます。
|
15
|
+
ようは、重い処理の終了を同期的に待たずに、軽い処理やメインの処理を先に実行、とすることができるというわけです。
|
15
16
|
よく使われる処理としては、HTTP通信でのAPI使用時に、レスポンスを受け取るとかです。
|
16
17
|
また、読み込みの処理や、デバイス内の重いデータの読み込みなんかにもよく使用されます。
|
17
18
|
利点としては上記の通りですが、
|
18
19
|
デメリットというか、注意点としては、非同期で変数を定義、代入としたときに、
|
19
20
|
メインの処理でその変数を使いたいってときに、変数にまだ値が入ってない!ってことが起きやすいことです。
|
20
21
|
よって、非同期処理の際は、基本的に、処理が終わった際に実行されるコールバックを用意し、
|
21
|
-
そのコールバックで、メインの
|
22
|
+
そのコールバックで、メインの処理の変数に代入、処理の続きを行う、ということをします。
|
22
23
|
Swiftでよく使うフレームワークである、
|
23
24
|
UIKit/AppKitにおいては、非同期処理の多くは、**デリゲート**を使用しています。
|
24
25
|
|
26
|
+
また、今回の話は、**スレッド**についても深く関係してきますので、
|
27
|
+
より理解するには、学習が必要かと思います。
|
28
|
+
|
25
29
|
上記二つの他、**並列処理**というものがありますが、(非同期処理と非常に似てるが、違う)
|
26
30
|
本件では割愛します。
|
27
31
|
|
2
デリゲートの多用は、swiftではなく、swiftでよく使用するフレームワークにおいてと追記
answer
CHANGED
@@ -19,7 +19,8 @@
|
|
19
19
|
メインの処理でその変数を使いたいってときに、変数にまだ値が入ってない!ってことが起きやすいことです。
|
20
20
|
よって、非同期処理の際は、基本的に、処理が終わった際に実行されるコールバックを用意し、
|
21
21
|
そのコールバックで、メインのスレッドの変数に代入、処理の続きを行う、ということをします。
|
22
|
+
Swiftでよく使うフレームワークである、
|
22
|
-
|
23
|
+
UIKit/AppKitにおいては、非同期処理の多くは、**デリゲート**を使用しています。
|
23
24
|
|
24
25
|
上記二つの他、**並列処理**というものがありますが、(非同期処理と非常に似てるが、違う)
|
25
26
|
本件では割愛します。
|
1
学習方法を提示
answer
CHANGED
@@ -24,4 +24,10 @@
|
|
24
24
|
上記二つの他、**並列処理**というものがありますが、(非同期処理と非常に似てるが、違う)
|
25
25
|
本件では割愛します。
|
26
26
|
|
27
|
-
各用語に関しては、ご自身でお調べください。
|
27
|
+
各用語に関しては、ご自身でお調べください。
|
28
|
+
|
29
|
+
学習の仕方ですが・・・、一番いいのは、WebAPI用意してー、ですが、(最近はよくAPI処理をする案件がほとんどのため)
|
30
|
+
デバイス内の重いファイルに対しての非同期処理、といった形で練習すればいいのではないでしょうか?
|
31
|
+
APIに関しては、書籍もいっぱいありますし、
|
32
|
+
画像や動画処理に関しては、書籍もいっぱいありますし、
|
33
|
+
Swiftの練習としてはかなりいい教材になると思いますよ。
|