iOS不同类型的对象初始化

标签 ios objective-c 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;
    });

那么,它是不是一种新的语言特性,允许我们以不同的方式初始化对象。这有点像 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,为什么会这样?最后一行是返回语句还是什么?

谢谢。

最佳答案

只是FTR,使用常规代码没有区别

(与 json 非常相似,例如,您现在可以非常简单地直接说出 dict[@"someKey"] - 但没有根本区别。)

感谢您指出这一点!!

关于iOS不同类型的对象初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23873549/

相关文章:

ios - 如何检测iOS中大文件的存在?

ios - Sinch 通话音频不工作

iphone - UIAlertView - 访问 subview ,滚动

ios - 撤销 APNS 证书

ios - 通过生成已知过期的 CKServerChangeToken 来测试 CKErrorChangeTokenExpired 处理

ios - SpriteKit 穿墙拖放

ios - 如何分配标签文本属性以显示数组中的字符串?

ios - 在 iOS-7 中按需隐藏和显示左侧导航栏按钮

iphone - 如何动态更改 UIButton 的位置

ios7 - 当手机联系人与 iOS 中的 Facebook 好友联系人同步时,应用程序崩溃