使用CGFloat和“内存占用”

时间:2012-08-08 23:00:22

标签: ios floating-point typedef cgfloat

我正在阅读this,我对通过增加内存占用意味着什么感到好奇。无论如何,我不是这方面的专家。除了我想到系统如何工作之外,我实际上知之甚少。如果有人可以帮助澄清我的想法并在我错的地方纠正我,我会非常感激。

我知道通过使用正确的typedef,如果apple更改了typedef的结构,并且使用typedef不应该影响处理器,我将面向未来的代码,因为它的编译器或预处理器的工作基本上是转换它们。但是,如果typedef仅用于期望它们的函数(及其精度),例如CGRect / CGSize / etc和要求这些typedef的NSDate函数,它实际上会使用比必要更多的内存吗?

基本上,是否有任何EXTRA内存被使用,因为它们仅用于函数请求它们的情况,而不是使用它们当前的对应物(CGFloat - > float)?

这适用于iOS vs OSX,因为我知道OSX有32位和64位处理器,并且预计会有typedef。

2 个答案:

答案 0 :(得分:1)

这样想。内存占用通常意味着您随时消耗的内存量。如果你没有任何理由使用64位值而不是完全有用的32位值,那么就会有一些边际通货膨胀。也就是说,我敢打赌你的大部分用法都是自动化和对象ivars。

现在在iOS上,CGFloat == float。

我个人总是将CGFloat用于任何可能与iOS接口的东西 - 也就是说,除非我正在做一些数学函数。就像你说的那样。有一天,我不得不在iOS上获取一些代码并将其移至Mac应用程序,几乎没有时间(因为我使用CGFlat,NSInteger和朋友)。您将不会收到转换警告(即将64位值移动到32位值)。

将来,鉴于iOS的普及,很可能会有使用64位浮点和整数的处理器。它的进步性质。如果你使用CGFloat和朋友,你的代码将在没有警告的情况下在32位和64位的通用应用程序上进行编译。

答案 1 :(得分:0)

如果Apple使用CGFloat,你为什么要关注它呢?使用与您呼叫的api呼叫匹配的类型。如果CGFloat是一个内存问题,我们的手机都会崩溃。