2012-10-11 34 views
0

我希望实现类似苹果用CGRectMake()和其他所有~Type~Make()功能所做的模式。 CGRectMake的代码是什么...我明白它的作用,但更具体地说,我想知道它的功能(就堆栈,堆等而言)?CGRectMake(或其他Make功能)到底做了什么?

难道仅仅是:

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; 
} 

还是有更多的它(和学习!)?

编辑 是否有他们不使它成为构造函数的原因?

+1

构造函数用于C++;这是荣耀的C.编译器将在栈上构建'CGRect'结构并生成代码将其复制回调用者。 – trojanfoe

回答

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

你看到的是它,因为它是一个struct没有一个班,真的不是更多。由于它是struct它存储在堆栈中。

CGRectMake函数只是一个便利的方法,用于制作CGRect


另见伟大的答案被Matthias BauchCMD +鼠标点击的方法来得到它的实现。

你可以als alt +鼠标点击获取方法说明。