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

What exactly does CGRectMake (or other Make functions) do?

本文关键字:究竟 什么 函数 其他 Make CGRectMake      更新时间:2023-10-16

我希望实现一种类似于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;
}

还是还有更多(并且需要学习!

编辑他们没有理由不使其成为构造函数吗?

如果你按住命令点击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;
}

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

CGRectMake功能只是制作CGRect的便捷方法。


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

您可以单击alt +鼠标以获取方法说明。