2012-08-08 68 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