我试图将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;
});
那么,它是一种新的语言功能,它允许我们以不同的方式初始化对象。这有点像Object Initializer in 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;
它给我编译错误 ARC不允许将'BOOL'(又名'signed char')隐式转换为'UITableView *' ,为什么会这样?最后一行是什么样的退货声明还是什么?
感谢。
答案 0 :(得分:1)
如果使用传统代码,只需FTR即可无差异。
(就像json说的那样,你现在可以直接简单地说dict [@" someKey"]但是没有根本的区别。)
感谢您指出这一点!!