gpt4 book ai didi

ios - 从 CompletationBlock 中提取参数

转载 作者:行者123 更新时间:2023-11-29 02:57:02 24 4
gpt4 key购买 nike

我定义了一个名为 CompletionHandlerBlock 的类型

typedef void (^CompletionHandlerBlock)(NSURLResponse *response, NSData *data, NSError *error);

这是方法:

NSURL *url = [NSURL URLWithString:@"http://www.youtube.com"];

NSURLRequest *urlRequest2 = [NSURLRequest requestWithURL:url];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:urlRequest2 queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
NSLog(@"completed");
}
];

我想使用 va_start 和 va_arg 函数来动态检测在完成 block (completionHandler) 中传递的 args 的值。

我已经尝试过:

CompletionHandlerBlock obj2 = va_arg(*argp,CompletionHandlerBlock);
//now obj2 contains the CompletionHandler block object
va_list argp2;
va_start(argp2, obj2);
for(id obj = obj2; obj; obj = va_arg(argp2, id)) {
NSLog(@"obj:%@",obj);
}
va_end(argp2);

但是没有成功。重点是获取 NSResponse、NSData 和 NSError 对象。

谢谢

最佳答案

你根本不能使用 va_arg 除非在函数或方法或 block 中使用可变数量的参数,即用 ... 作为最后一个参数声明的。所以无论你想做什么,它都不可能奏效。

另一方面,您实际上想要实现的什么是非常不清楚的。响应、数据和错误已经是完成 block 的参数。您应该真正编写您尝试使用的完整代码,而不仅仅是没有任何上下文的代码片段。

关于ios - 从 CompletationBlock 中提取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23756136/

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