需要解释奇怪的语法

时间:2014-04-29 18:22:42

标签: ios objective-c compound-literals

我按照教程找到这段代码:

self.imageView.frame = (CGRect){.origin = CGPointMake(0.0f, 0.0f), .size = image.size};

它非常清楚它做了什么,但我不理解这行代码的语法。我第一次看到这样的事情:.size = image.size。在点语法中,我希望在点前面看到一些内容,例如self.view,但.size的含义是什么?

第二个问题是 - 为什么有圆括号,后面是大括号?我之前从未见过像(){};那样的结构。

我的问题可能听起来很愚蠢,但现在我有点困惑,有人可以提供解释吗?谢谢。

1 个答案:

答案 0 :(得分:5)

这是C结构的Designated Initializer syntax。括号()用于将结构转换为CGRect。正如Martin R指出的那样,除非你使用复合文字语法,否则不需要强制转换,你没有为参数命名。