Objective c 点语法的Cocoa点语法

Objective c 点语法的Cocoa点语法,objective-c,cocoa,Objective C,Cocoa,使用这样的语法可以吗: Object.parent.property 或者我应该将其限制为一个点和一个级别吗?是的,可以,不管有多少级别。他们都被翻译成这样 [[[[Object parent] property] anotherProperty] yetAnotherProperty] 这相当于: Object.parent.property.anotherProperty.yetAnotherProperty; 这就解释了一切:是的,使用这样的语法非常好而且很常见。一般来说,可以使用:

使用这样的语法可以吗:

Object.parent.property

或者我应该将其限制为一个点和一个级别吗?

是的,可以,不管有多少级别。他们都被翻译成这样

[[[[Object parent] property] anotherProperty] yetAnotherProperty]
这相当于:

Object.parent.property.anotherProperty.yetAnotherProperty;

这就解释了一切:

是的,使用这样的语法非常好而且很常见。

一般来说,可以使用:

a.b.c
然而,如果涉及到结构,那么它可能无法工作。考虑下面的类声明:

@interface Circle : NSObject
@property (assign) NSPoint centre;
@end
在本例中,
center
属性的类型为
NSPoint
,一种声明两个成员的结构(不是类!),
x
y
。阅读
x
坐标工程:

CGFloat x = circle.centre.x;
相当于:

CGFloat x = [circle center].x;
但是写入
x
坐标不会:

circle.centre.x = 50;
因为赋值的左边部分称为左值,是不可赋值的。赋值尝试更改返回值的成员变量,即
[圆心]
返回的结构

您将不得不写下以下内容:

NSPoint centre = circle.centre;
centre.x = 50;
circle.centre = centre;

查阅“得墨忒尔定律”:维基百科页面非常有用!谢谢