CGRectMake(或其他Make函数)究竟做了什么?

时间:2012-10-11 11:31:39

标签: c++ objective-c c

我希望实现与Apple对CGRectMake()及其他所有~Type~Make()函数的类似模式。 CGRectMake的代码是什么......我理解它的作用,但更具体地说,我想知道它的作用(就堆栈,堆等而言)?

只是:

inline function CGRectMake(CGFloat x,  CGFloat y, CGFloat width, CGFloat height) {
    CGRect rect;
    rect.x = x;
    rect.y = y;
    rect.width = width;
    rect.height = height;
    return rect;
}

或者还有更多(并且需要学习!)?

修改 他们有没有理由不把它变成构造函数?

2 个答案:

答案 0 :(得分:2)

如果您按住命令单击CGRectMake Xcode会显示其实现。你几乎拥有它; - )

CG_INLINE CGRect
CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
{
  CGRect rect;
  rect.origin.x = x; rect.origin.y = y;
  rect.size.width = width; rect.size.height = height;
  return rect;
}

答案 1 :(得分:1)

你看到的是什么,因为它是一个struct而不是一个类,真的没有更多的东西。由于它是struct,它存储在堆栈中。

CGRectMake函数只是制作CGRect的便捷方法。


另请参阅Matthias Bauch关于 cmd +鼠标点击方法以获得实现的完美答案。

您可以通过 alt +鼠标点击来获取方法说明。