最初にsignUp
メソッドを呼び出したいと思います。ユーザーIDを取得したら、別のメソッドnormalSignupMethod
を呼び出す必要があります。完了ブロックが完了したらメソッドを呼び出す方法は?
[ConnectionObj signUp:user];
[helper normalSignupMethod:dict];
申し込み方法:
[MYRequest signUp:user successBlock:^(QBResponse *response, QBUUser *user) {
// Sign up was successful
// Store user id
[SingletonClass sharedMySingleton].userID = [NSString stringWithFormat:@"%@",response.data[@"id"]];
} errorBlock:^(QBResponse *response) {
// Handle error here
NSLog(@" error in creating session %@", response.error);
[SVProgressHUD showErrorWithStatus:NSLocalizedString(@"SignUp to Chat error!", nil)];
}];
このI Iが呼び出されたか:
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0),^{
NSLog(@"Block1");
[ConnectionObj signUp:user];
});
dispatch_group_notify(group,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0),^{
NSLog(@"Group notify");
[helper normalSignupMethod:dict];
dispatch_async(dispatch_get_main_queue(), ^{
[SVProgressHUD dismiss];
});
});
ブロック1が最初に実行し、その後グループが呼び出さ知らせます。しかし、私はnormalSignupMethodの終了後にuserIDを取得しています。 normalSignupMethodを呼び出す前にsignUpメソッドがuserIDを取得するのを待つ方法
偶発的な複雑性を導入し、代理人を使用しない理由を教えてください。デリゲートを使用する場合、この問題は発生しません。 –
'dispatch_group_enter'と' dispatch_group_leave'を使ってみましたか?最初の実行が完了するのを待つようにします。 – KhanXc
'signUp:'メソッドの定義を含めませんでした。代わりに 'signUp:successBlock:errorBlock:'を指定しました。これはあなたが望む目的のためにブロック内の追加のものを呼び出すためのフックを与えます。 @ suhitと@ndocは、基本的にはどのように行くのかを示します。どんな派遣用のものでも私は非常に奇妙な気がします。 – Gero