是否有可能(如果是这样,如何)将块的返回值赋给变量?

ini*_*333 2 objective-c objective-c-blocks

是否可以将块的返回值赋给变量?

例如,我知道可以这样做:

NSString *(^sampleBlock)(void) = ^NSString *(void)
{
    return @"sampleString";
};

NSString *string = sampleBlock();
Run Code Online (Sandbox Code Playgroud)

但我想实现类似的东西(以下语法不正确):

NSString *string = ^NSString *(void)
{
    return @"sampleString";
};
Run Code Online (Sandbox Code Playgroud)

我一直在浏览几个解释块语法的站点,例如fuckingblocksyntax.com,但这种情况没有考虑到.我知道它可以通过很多方式完成,我只是想这样做,出于可读性目的.

有谁知道这实际上是否可行?

谢谢

luk*_*302 5

当然这是可能的,但你必须通过最后添加来实际执行块().否则,您无法分配任何返回值.

NSString *string = ^NSString *(void)
{
    return @"sampleString";
}();

NSLog(@"%@", string);
Run Code Online (Sandbox Code Playgroud)

正确输出

sampleString