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;
查阅“得墨忒尔定律”:维基百科页面非常有用!谢谢