<分区>
我正在尝试整合 RESideMenu到我的申请。我试图了解它是如何工作的,以便能够进行更多自定义。比起,我遇到了这个我以前从未见过的初始化。我似乎找不到任何官方文档或关于 SO 的任何问题来解释更多。如果是这样,请指出正确的方向。
这是我正在谈论的代码
self.tableView = ({
UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, (self.view.frame.size.height - 54 * 5) / 2.0f, self.view.frame.size.width, 54 * 5) style:UITableViewStylePlain];
tableView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleWidth;
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# 中的对象初始化器
。
如果我像下面这样初始化,那会有什么不同
self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, (self.view.frame.size.height - 54 * 5) / 2.0f, self.view.frame.size.width, 54 * 5) style:UITableViewStylePlain];
[self.tableView setDelegate:self];
[self.tableView setDataSource:self];
[self.tableView setOpaque:NO];
....
...
最后一个问题,这种初始化是否适用于任何 UIKit
类或任何 Foundation
类?
编辑
如果我在初始化中注释最后一行代码 tableView;
它会给我编译错误,即 'BOOL' (aka 'signed char') 到 'UITableView *' 的隐式转换不允许使用 ARC,为什么会这样?最后一行是返回语句还是什么?
谢谢。