gpt4 book ai didi

objective-c - Objective-C 中的 block 语法问题 - 带有返回类型和参数的 typedef block

转载 作者:行者123 更新时间:2023-12-04 02:54:19 25 4
gpt4 key购买 nike

我有一个障碍:

typedef id (^completionBlock)(id data, NSURLResponse *urlResponse, NSError *error);

在一个类方法中,我尝试用一​​些代码填充这个 block 。

request.requestCompletedBlock = ^(id data, NSURLResponse *urlResponse, NSError *error){
...
return object;
};

requestCompletedBlock 显然是 completionBlock 类型。

我收到以下错误:

“从‘void *(^)( _strong id, NSURLResponse *_strong, NSError *__strong)'"

显然我的语法在某处有误,但是在哪里呢?

非常感谢,

Vb

最佳答案

无论出于何种原因,编译器推断内联 block 的返回类型是 void*,而不是 id。您可以通过将返回类型放在 ^ 之后强制它使用 id 的返回类型,如下所示:

request.requestCompletedBlock = ^id (id data, NSURLResponse *urlResponse, NSError *error) {
// ~~
// Return type
}

参见 this page有关 block 语法的详细说明。

关于objective-c - Objective-C 中的 block 语法问题 - 带有返回类型和参数的 typedef block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15374411/

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