iOS不同类型的对象初始化

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*'的隐式转换是不允许的,为什么会发生这种情况?最后一行是什么样的退货声明还是什么?

谢谢.

Fat*_*tie 1

就FTR,用常规代码没有什么区别。

(就像使用 json 一样,您现在可以非常简单地直接说出 dict[@"someKey"] - 但没有根本区别。)

感谢您指出了这一点 !!