gpt4 book ai didi

iphone - 我想在 block 执行后返回值

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:14:48 26 4
gpt4 key购买 nike

- (NSString *) BBB {
__block NSString *returnValue;

NSDictionary *queryParameters = @{ @"q" : @"SELECT uid FROM user WHERE uid = me()"};
[FBRequestConnection startWithGraphPath:@"fql" parameters:queryParameters HTTPMethod:@"GET" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
returnValue = result[@"data"][0][@"uid"];
NSLog(@"inside block -> %@", returnValue);
}];

return returnValue;
}

我想返回正确的值,但 FBRequestConnection 是一个异步请求。returnValue 的 make 值为 (null),因为它在执行 FBRequestConnection 的 completionBlock 之前返回。

最佳答案

如果您需要将该值返回给特定方法,一个简单的解决方案可能是将依赖该值的代码移至其他方法。您也可以考虑设置一个等待指示器。在这种情况下,用户将知道正在运行一个操作。

- (void)BBB {    

__weak SelfType weakSelf = self; // to prevent possible memory leaks if you use ARC

NSDictionary *queryParameters = @{ @"q" : @"SELECT uid FROM user WHERE uid = me()"};
[FBRequestConnection startWithGraphPath:@"fql" parameters:queryParameters HTTPMethod:@"GET" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
returnValue = result[@"data"][0][@"uid"];
NSLog(@"inside block -> %@", returnValue);

__strong SelfType safeSelf = weakSelf;
if(safeSelf) {
// notify that the operation is finished
[safeSelf DDDWithReturnValue:returnValue];
}
}];
}

我提供的代码在 ARC 下工作。如果您的代码未启用 ARC,请使用

__block SelfType weakSelf = self; // for non-ARC code

关于iphone - 我想在 block 执行后返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15734102/

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