1
bail:
    if ( err && image ) {
        CGImageRelease( image );
        image = NULL;
    }
    if ( provider ) CGDataProviderRelease( provider );
    if ( colorspace ) CGColorSpaceRelease( colorspace );
    *imageOut = image;
    return err;

我查看了一些代码,发现了这个。我以前从未见过这种情况。是什么bail:意思?

它来自这里

4

2 回答 2

7

这是goto语句跳转到的标签。

您正在查看的代码SquareCamViewController.m使用名为 的宏require,如下所示:

require( error == nil, bail );

这个宏在AssertMacros.h头文件中定义。它将标签作为其第二个参数,goto如果第一个参数的计算结果为 false,则使用该标签。

用于在函数末尾goto跳转到清理代码是gotoC 中最常见的和标签用法。

于 2013-03-29T03:15:28.477 回答
3

bail:是一个标签。这是标准的 C 语法。它在正确编写的代码中不经常使用。它最常见的用途是与goto. 请避免使用goto. 在您引用的代码中,该require函数使用它。如果require失败,代码将跳转到bail标签,跳过其间的所有其他代码。

于 2013-03-29T03:11:24.847 回答