0

我正在阅读这篇文章,我很好奇增加内存占用意味着什么。无论如何,我都不是这方面的专家。实际上,我知道的很少,除了我想出的关于系统如何工作的想法。如果有人可以帮助澄清我的想法并纠正我的错误,我将不胜感激。

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

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

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

4

2 回答 2

1

这样想吧。内存占用通常意味着您在任何时候都消耗了多少内存。如果您无缘无故地使用 64 位值而不是完全有用的 32 位值,则存在一些边际膨胀。也就是说,我敢打赌你的大部分使用都是在自动和对象 ivars 中。

现在在 iOS 上,CGFloat == 浮动。

我个人总是将 CGFloat 用于任何可能与 iOS 交互的东西——也就是说,除非我正在做一些数学函数。正如你所说。前几天我不得不在 iOS 上获取一些代码并将其移动到 Mac 应用程序中,而且几乎不需要时间(因为我使用 CGFlat、NSInteger 和朋友)。您将不会收到任何转换警告(即将 64 位值转换为 32 位值)。

未来,鉴于 iOS 的普及,很可能会有使用 64 位浮点和整数的处理器。这是进步的本质。如果您使用 CGFloat 和朋友,您的代码将在 32 位和 64 位通用应用程序上编译而不会出现警告。

于 2012-08-08T23:17:14.613 回答
0

如果 Apple 使用 CGFloat,你为什么会担心呢?使用与您正在调用的 api 调用匹配的类型。如果 CGFloat 是内存问题,我们的手机都会崩溃。

于 2012-08-09T00:25:01.973 回答