我已经使用 Objective C 几个月了,这是我第一次在 Objective C 中看到这种类型的语法。我想我知道它的等价物,但我想确定。
具体来说,代码是这样的
float imageHeight = [player texture].contentSize.height;
'[player texture].contentSize.height 相当于什么? 我知道点和括号语法可以是同一件事
something.backgroundColor = [UIColor redColor];
[something setBackgroundColor:[UIColor redColor]];
上面两个差不多..
这就是我的第一个示例中发生的情况吗?我只是从未见过括号和点语法混合在一起。
谢谢。
最佳答案
float imageHeight = [player texture].contentSize.height;
这可能与:
float imageHeight = [[player texture] contentSize].height;
当应用于对象指针时,点语法会转换为调用适当的属性访问器方法。当应用于结构时,它是对该结构的其中一个字段的直接访问。
因此,假设 [player texture]
返回一个指向对象(可能是图像)的指针,第一次使用点语法访问该对象的 contentSize
属性。如果 -contentSize
也返回一个对象指针,那么下一次使用也会转换为访问器的调用。不过,contentSize
属性更有可能是一个 NSSize,而 NSSize 是一个包含 width
和 height
字段的结构。因此,第二次使用点语法很可能会从该结构中检索 height
字段。
混合点语法的两种不同含义可以很好地获取 一个值,但如果您尝试使用它来设置 值,则会出现错误。如果我在上一段中的假设是正确的,你就不能这样做:
[player texture].contentSize.height = 50;
关于objective-c - 括号+点语法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8698647/