gpt4 book ai didi

iphone - 为什么要使用像 CGRectMake 这样的函数?

转载 作者:太空狗 更新时间:2023-10-30 03:14:21 29 4
gpt4 key购买 nike

我很好奇为什么像 CGRectMake 和 CGPointMake 这样的函数存在并被广泛使用。什么时候,你可以这样做:

(CGRect){{x, y}, {width, height}}

因为没有函数调用,这肯定更有效(虽然我猜不是很多)?

你也可以像这样设置原点和大小:

 (CGRect){origin, size}

作为混合物:

 (CGRect){origin, {width, height}}

不使用它而更喜欢 Make 函数的原因是什么?

最佳答案

实际上,它并没有提高效率。 CGRectMake 函数(和其他函数)被声明为 static inline,这意味着编译器副本将函数代码直接粘贴到它使用的每个地方:

CG_INLINE CGRect
CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)

在哪里

#  define CG_INLINE static inline

你从

// code
CGRect myRect = CGRectMake(1,2,3,4);
// code

// code
CGRect myRect;
myRect.origin.x = 1; myRect.origin.y = 2;
myRect.size.width = 3; myRect.size.height = 4;

原则上与

没有区别
CGRect myRect = (CGRect){1,2,3,4};

在编译器优化等之后。

如上所述,您添加了对 CGRect 的依赖,它是一个由 4 个数字组成的结构,以某种方式对齐,而不是使用对其有更多保证的函数。

关于iphone - 为什么要使用像 CGRectMake 这样的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11700535/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com