lim*_*mon 7 objective-c ios ios7
我试图将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;
});
Run Code Online (Sandbox Code Playgroud)
那么,它是一种新的语言功能,允许我们以不同的方式初始化对象.有点像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];
....
...
Run Code Online (Sandbox Code Playgroud)
最后一个问题,这种初始化是否适用于任何UIKit类或任何Foundation类?
编辑
如果我在初始化中注释这最后一行代码,tableView;它给我编译错误,即 'BOOL'(又名'signed char')到'UITableView*'的隐式转换是不允许的,为什么会发生这种情况?最后一行是什么样的退货声明还是什么?
谢谢.
就FTR,用常规代码没有什么区别。
(就像使用 json 一样,您现在可以非常简单地直接说出 dict[@"someKey"] - 但没有根本区别。)
感谢您指出了这一点 !!