teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

ふんわりを形に。

2017/04/14 01:25

投稿

fuzzball
fuzzball

スコア16733

answer CHANGED
@@ -1,8 +1,19 @@
1
- GCDのシリアルキュー使っ
1
+ 1. userRegister()、userLogin()、checkMessage()同期関数にする。(userRegister()内のuserLogin()は削除しおくこと)
2
2
 
3
- 1. 新規登録の場合はuserRegister()をキューに積む。
4
- 2. userLogin()キューに積む
3
+ 2. GCD使って3つの処理を裏で実行する
5
- 3. 1と2の処理が終わったらcheckMessage()を実行する。
6
4
 
7
- (注意) 現在、userRegister()の中userLogin()が含まれていますが、これ削除しおきます
5
+ 同期関数化にはセマフォなどを使っ下さい
8
6
 
7
+ ---
8
+
9
+ サンプルコード(Swift2)
10
+
11
+ ```swift
12
+ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
13
+ if (新規登録) {
14
+ self.userRegister()
15
+ }
16
+ self.userLogin()
17
+ self.checkMessage()
18
+ }
19
+ ```

2

GCD

2017/04/14 01:25

投稿

fuzzball
fuzzball

スコア16733

answer CHANGED
@@ -1,29 +1,8 @@
1
- userLogin()引数でログイン後の処理渡すようにしみては?
1
+ GCDシリアルキュー使っ
2
2
 
3
- ```swift
3
+ 1. 新規登録の場合はuserRegister()をキューに積む。
4
- UserAPI.userLogin({
4
+ 2. userLogin()をキューに積む。
5
- UserAPI.checkMessage(result: { count in
5
+ 3. 1と2の処理が終わったらcheckMessage()を実行する。
6
- print(count) //ここでエラー
7
- /*
8
- ログイン後にメッセージ数取得を行わないといけない、
9
- かつ画面の更新も行いたい。
10
- */
11
- })
12
- })
13
- ```
14
6
 
15
- ```swift
16
- UserAPI.userRegister({
17
- UserAPI.userLogin({
18
- UserAPI.checkMessage(result: { count in
7
+ (注意) 現在、userRegister()の中にuserLogin()が含まれていますが、これは削除しておきます。
19
- print(count) //ここでエラー
20
- /*
21
- ログイン後にメッセージ数取得を行わないといけない、
22
- かつ画面の更新も行いたい。
23
- */
24
- })
25
- })
26
- })
27
- ```
28
8
 
29
- ※コードはイメージです

1

めんどくせぇ

2017/04/13 04:13

投稿

fuzzball
fuzzball

スコア16733

answer CHANGED
@@ -12,4 +12,18 @@
12
12
  })
13
13
  ```
14
14
 
15
+ ```swift
16
+ UserAPI.userRegister({
17
+ UserAPI.userLogin({
18
+ UserAPI.checkMessage(result: { count in
19
+ print(count) //ここでエラー
20
+ /*
21
+ ログイン後にメッセージ数取得を行わないといけない、
22
+ かつ画面の更新も行いたい。
23
+ */
24
+ })
25
+ })
26
+ })
27
+ ```
28
+
15
- ※コードはイメージです
29
+ ※コードはイメージです