gpt4 book ai didi

ios - 完成 block 完成后如何调用方法?

转载 作者:行者123 更新时间:2023-11-28 18:08:54 24 4
gpt4 key购买 nike

我想先调用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)];
}];

我是这样称呼的:

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];
});
});

Block 1先执行,然后group notify被调用。但是在 normalSignupMethod 完成后我得到了 userID。如何在调用 normalSignupMethod 之前等待 signUp 方法获取用户 ID?

最佳答案

你可以像这样用你的 signUp 方法创建一个 block 并传递 Bool 完成值来检查它是否被成功调用。所以像这样更改您的方法声明。

-(void)signUp:(QBUser*)user andHandler:(void (^)(BOOL result))completionHandler;

及其定义

-(void)signUp:(QBUser*)user andHandler:(void (^)(BOOL result))completionHandler {
[MYRequest signUp:user successBlock:^(QBResponse *response, QBUUser *user) {
[SingletonClass sharedMySingleton].userID = [NSString stringWithFormat:@"%@",response.data[@"id"]];
completionHandler(YES);
} errorBlock:^(QBResponse *response) {
// Handle error here
NSLog(@" error in creating session %@", response.error);
[SVProgressHUD showErrorWithStatus:NSLocalizedString(@"SignUp to Chat error!", nil)];
completionHandler(NO);
}];
}

现在像这样调用这个方法。

[ConnectionObj signUp:user andHandler:^(BOOL result) {
if(result) {
[helper normalSignupMethod:dict];
}
}];

关于ios - 完成 block 完成后如何调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39138402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com