objective-c – 分配括号中括起来的几个语句和ObjC中的大括号

前端之家收集整理的这篇文章主要介绍了objective-c – 分配括号中括起来的几个语句和ObjC中的大括号前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > How is this form of scoping called? 1
我正在阅读第三方RESideMenu框架的代码,并注意到一些奇怪的语法似乎工作正常.这是令人困惑的一点:
self.tableView = ({
    UITableView *tableView = [[UITableView alloc] initWithFrame:frame style:UITableViewStylePlain];
    tableView.autoresizingMask = mask;
    tableView.delegate = self;
    tableView.dataSource = self;
    tableView.opaque = NO;
    tableView.backgroundColor = [UIColor clearColor];
    tableView.backgroundView = nil;
    tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    tableView.bounces = NO;
    tableView.scrollsToTop = NO;
    tableView;
});

这个语法如何工作?我怀疑它与C级块的范围有关,但我从未见过这个.我也认为这可能是Objc-2.0文字的新功能,但我不认为这是真的.

所以我想我的问题是这是如何工作/什么使这项工作?

解决方法

NSHipster所述:

Behind the magic is a GCC C extension,which causes a code block to return a value if enclosed within brackets and parentheses.

This not only segregates configuration details into initialization,but the additional scope allows generic variable names like frame,button,and view to be reused in subsequent initializations. No more loginButtonFrame = … / signupButtonFrame = …!

猜你在找的C&C++相关文章