可以使用这样的语法:
Object.parent.property
或者我应该将它限制在一个点和一个级别?
答案 0 :(得分:4)
一般情况下,可以使用:
a.b.c
但是,如果涉及到结构,那么它可能无效。请考虑以下类声明:
@interface Circle : NSObject
@property (assign) NSPoint centre;
@end
在这种情况下,centre
属性的类型为NSPoint
,结构(不是类!)声明了两个成员x
和y
。阅读x
坐标有效:
CGFloat x = circle.centre.x;
并且相当于:
CGFloat x = [circle center].x;
但写x
坐标不会:
circle.centre.x = 50;
因为分配的左侧部分(称为左值)不可分配。赋值正在尝试更改返回值的成员变量,即[circle centre]
返回的结构。
你必须写这个:
NSPoint centre = circle.centre;
centre.x = 50;
circle.centre = centre;
答案 1 :(得分:3)
是的,使用这样的语法是完全正常和常见的。
答案 2 :(得分:2)
是的,没关系,多少级别无关紧要。他们都被翻译成了这个。
[[[[Object parent] property] anotherProperty] yetAnotherProperty]
这相当于:
Object.parent.property.anotherProperty.yetAnotherProperty;