objective-c - cocoa 点语法之点语法

标签 objective-c cocoa

可以使用这样的语法吗:

Object.parent.property

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

最佳答案

一般情况下,使用:

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 center]返回的结构。

你必须这样写:

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

关于objective-c - cocoa 点语法之点语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7924517/

相关文章:

objective-c - 如何在 OSX 上使用 CNContactViewController 显示 CNContact

iphone - NSOperation 和 NSOperationQueue 回调

objective-c - 在 Cocoa 应用程序中打开非标准 URL

iphone - 我们可以使用 Objective C 创建一个 Web 服务吗

ios - SQLite id 字段 - 自动填充

cocoa - ABPeoplePickerView - 如何让它滚动到选定的记录?

cocoa - 在命令行工具中使用框架

objective-c - 使用 arc 退出对象的初始化?

iphone - CGBitmapContextCreate 的内存使用率非常高

iphone - 从单个方法实例化一定数量的唯一对象