2012-08-08 67 views
0

我在读this,我很好奇增加内存占用量是什么意思。无论如何,我都不是这方面的专家。实际上我知道的很少,除了我想到的系统工作方式。如果有人能帮助澄清我的想法并纠正我的错误,我会非常感激。使用CGFloat和“内存占用”

我知道通过使用正确的typedefs,我可以在未来对我的代码进行验证,以防苹果更改typedef的结构,并且使用typedefs不应该影响处理器,因为它的编译器或预处理器的工作基本上会转换它们。但是如果typedef仅用于期望它们的函数(以及它们的精度),比如CGRect/CGSize/etc和需要这些typedef的NSDate函数,它是否会使用比所需更多的内存?

基本上,是否有任何额外内存正在使用,因为它们只用于功能需求的情况下,而不是使用它们的当前对应物(CGFloat - > float)?

这是针对iOS和OSX的,因为我知道OSX同时拥有32位和64位处理器,并且预计有typedef。

+1

对不起,但是你的问题到底是什么? – JustSid 2012-08-08 23:05:06

回答

1

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

在iOS上,CGFloat ==浮动。

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

未来,考虑到iOS的普及,很可能会有使用64位浮点和整数的处理器。它是进步的本质。如果您使用CGFloat和朋友,则您的代码将在通用应用程序上编译时不会发出警告,并且它们都是32位和64位。

+0

因此,基本上,它不会造成任何伤害,只是提供可转移性,只要我意识到我在使用它们的位置(在我自己的函数中使用float和double,它们应用于此)。谢谢! – RileyE 2012-08-09 02:44:43

+1

它只有潜力 - 并注意wordage - 潜力 - 对于一些稍微更大的内存使用情况 - 只有当Apple发布带有64位运行时间的设备时。如果这样做,它将不得不在该设备上提供更多的内存,因为它们自己的框架将使用更多的内存。 – 2012-08-09 12:18:45

+0

太棒了。这就是我的想法,但我想确保。谢谢!你也可以帮我解答我最近关于房产的问题! – RileyE 2012-08-11 00:30:43

0

如果Apple使用CGFloat,为什么要关注它?使用与您正在呼叫的api呼叫相匹配的类型。如果CGFloat是内存问题,我们的手机将全部崩溃。

+0

成千上万的双打和花车之间的差异是一件大事。这就是为什么我想问这个问题。知道永远是一种比遗忘更好的解决方案。 – RileyE 2012-08-11 00:30:21