gpt4 book ai didi

ios - 定义后立即调用 block

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

我有这样的代码:

void (^testBlock)() = ^ {
NSLog(@"TEST");
};
testBlock();

我可以在定义后立即调用 block 吗:

void (^testBlock)() = ^ {
NSLog(@"TEST");
}();

当 block 只被调用一次时,这是一个好方法。有什么想法吗?

最佳答案

当您调用 void (^testBlock)() = ^ {...}(); 时,您实际上是在尝试保留对 block 返回的任何内容的引用,而不是 block 本身。Xcode 抛出:

Initializing 'void(^__strong)()' with an expression of incompatible type 'void'.

换句话说 - 您的 block 不返回任何内容(void),并且您正尝试使用 void(^)() 类型的强引用来保存它,这是您的 block 类型。

假设您想要引用该 block ,您必须首先声明该 block ,然后通过您为它提供引用的名称调用它,就像您在第一个代码段中显示的那样。

另一方面,如果您希望声明一个 block 并在不持有它的情况下调用它一次,您可以简单地删除对它的引用,然后调用:

^{
NSLog(@"TEST");
}();

关于ios - 定义后立即调用 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29383817/

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