开发者社区 问答 正文

关于这个 “bail:” 这是什么语法? 咋没见过

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

上述代码的 bail: 部分是什么意思,咋没见过这种代码风格?

展开
收起
爵霸 2016-03-24 09:45:54 2764 分享 版权
1 条回答
写回答
取消 提交回答
  • 这是goto语句跳转的标签。

    你正在看的代码:SquareCamViewController.m。使用了一个宏命名require,像这样:
    require( error == nil, bail );

    这个宏是在AssertMacros.h头文件中定义。他将标签作为第二参数,如果第一参数的值为false使用goto

    C中,使用goto和标签来跳转清除函数结尾的代码是最常用的方法。

    2019-07-17 19:11:58
    赞同 展开评论
问答地址: