0

我希望实现与 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;
}

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

编辑 他们不把它变成构造函数有什么原因吗?

4

2 回答 2

2

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

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;
}
于 2012-10-11T11:37:34.873 回答
1

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

CGRectMake函数只是 make a 的一种方便方法CGRect


另请参阅Matthias Bauch关于cmd+ 鼠标单击一种方法以实现其实现的出色答案。

您可以同时alt+ 鼠标单击以获取方法描述。

于 2012-10-11T11:33:09.160 回答