ios 初始化语法({})

我在RESideMenu这个库中发现初始化一个属性是用如下代码:

    self.contentViewContainer = ({
        UIView *view = [[UIView alloc] initWithFrame:self.view.bounds];
        view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
        view;
    });

请问这种({})是什么语法,很少见到用。

阅读 4k
3 个回答

这是语句内嵌表达式(statement-embedded expression),是 GCC 对 C 语言的扩展,并不是 Block。有兴趣可以去 Google。

没有看清楚,确实只是一个表达式,一个语法拓展

这就是OC2.0以后的那些语法糖,和block有些本质上的区别,例如@1代替NSNumber, @[]代表数组,这是编译器升级带来的便利!

这种块结构会把最后一行代码的值返回并作为这个表达式的值,只是为了提高阅读性,建议多人协作开发时,商议好规范

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题