【发布时间】:2012-08-07 08:45:25
【问题描述】:
我已经看到了使用CGRectMake() 来初始化CGRect 变量的替代方法:
CGRect 框架 = (CGRect){0,0,10,10};
我的问题是,CGRect frame = (CGRect){0,0,10,10}; 是如何工作的?幕后发生了什么?看起来正在初始化一个 c 样式数组 ({x,y,w,h}),然后将其转换为 CGRect 结构 - 这是正确的吗?如果是这样,如何将 c 样式数组转换为结构?
注意我不是在问是否适合使用上述替代 CGRectMake(),我只是想了解它为什么/如何工作。
【问题讨论】:
-
如果两个语句创建相同的字节序列,它就可以工作。但是,我很困惑您使用的是 0 和 10 而不是 0.0 和 10.0。 0 和 10 将被编译为整数常量,而 0.0 和 10.0 将作为浮点/双精度常量出现。因此,我怀疑您是否可以将浮动用作任何有用的法律框架。 CGRect 是由 CGPoint 和 CGSize 组成的结构。它们都由两个 CGFload 成员组成(在 CGPoint 的情况下为 x 和 y,在 CGSize 的情况下为宽度和高度)。
标签: objective-c c struct cgrect cgrectmake