检索属性时,Objective-C中间空间

时间:2018-04-06 20:50:27

标签: objective-c macos

几年后我回到了Objective-C,我觉得很困惑,发现这段代码编译:

- (void)viewDidLoad {
    [super viewDidLoad];
    NSView* view = self.view. superview;
}

请注意self.viewsuperview之间的空格。其他替代方案也可以用作例如:

NSView* view = self.view .superview

或更深奥的:

NSView * superView = self . view . superview;

忽略点之前/之后的空格。

为什么编译器没有抛出错误?

1 个答案:

答案 0 :(得分:1)

此行为是标准C.在可能的情况下会忽略空格。

一种可能的用途是使长密钥路径更具可读性,即:

NSString *firstName = 
employee.
person.
name.
firstName;

这种特殊语法特征的实际用处是值得商榷的,但C(特别是Objective-C)总是采用对严格性的压抑性/灵活性。