【问题标题】:Is there any reason to use Core Graphics data types when working with UIView objects使用 UIView 对象时是否有任何理由使用 Core Graphics 数据类型
【发布时间】:2010-10-29 19:33:58
【问题描述】:

是否真的需要这样做:

CGFloat x = 10.0f;
CGFloat y = 20.0f;

someView.center = CGPointMake(x, y);

而不是这个:

float x = 10.0;
float y = 20.0;

someView.center = CGPointMake(x, y);

...除了风格方面的考虑?

对性能有任何影响吗?

【问题讨论】:

    标签: iphone cocoa-touch coding-style types core-graphics


    【解决方案1】:

    通常这些类型的数据类型用于可读性,但也用于可移植性。如果 CoreGraphics 库要更改它的实现或数据类型,CGFloat 类型将有助于它更好地匹配 API。在考虑跨平台的可移植性时,这一点也很重要。

    我怀疑存在任何形式的性能差异 - 它可能最终仍然是编译代码中的浮点数。

    【讨论】:

    • 嗯,前一个代码使用float 文字表示可能是double 的类型,而后一个代码使用double 文字表示可能不等同于double 的类型。严格字面量编译器总是包含float 格式的float 字面量和double 格式的double 字面量,但是真正的编译器可能会存储已经转换为变量类型的初始化器值,因此在变量是CGFloat,如果不是(当你将它传递给需要CGFloat并且类型不匹配的函数时)会受到很小的惩罚。
    【解决方案2】:

    请参阅this 答案以获得对 CGFloat 的良好解释。它基本上是用于 32 位和 64 位平台之间的代码可移植性的 typedef。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-09
      • 2011-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-10
      相关资源
      最近更新 更多