簡體   English   中英

使用CGFloat和“內存占用量”

[英]Using CGFloat and “memory footprint”

我在讀這篇文章,並對增加內存占用量的含義感到好奇。 無論如何,我都不是這方面的專家。 實際上,除了我想出的系統工作原理之外,我幾乎了解甚少。 如果有人可以幫助澄清我的想法並糾正我的錯誤地方,我將不勝感激。

我知道通過使用正確的typedef,我可以對代碼進行將來的驗證,以防apple更改typedef的結構,並且使用typedef不會影響處理器,因為它的編譯器或預處理器的工作基本上是將它們轉換。 但是,如果typedef僅用於期望它們(及其精度)的函數,例如CGRect / CGSize / etc和要求這些typedef的NSDate函數,則實際上會使用比所需更多的內存嗎?

基本上,是否使用了EXTRA內存,假設它們僅在函數需要它們的情況下使用,而不是在使用當前的對應函數(CGFloat-> float)時使用?

這適用於iOS與OSX,因為我知道OSX同時具有32位和64位處理器,並且應該使用typedef。

這樣想吧。 內存占用量通常意味着您隨時消耗多少內存。 如果您無緣無故地使用64位值而不是完全有用的32位值,那么會有一些邊際膨脹。 就是說,我敢打賭,您的大多數用法都是在自動和對象ivars中使用。

現在在iOS上,CGFloat == float。

我個人總是將CGFloat用於可能與iOS接口的任何東西-也就是說,除非我正在做一些數學函數。 而且正如您所說的那樣。 前幾天,我不得不在iOS上獲取一些代碼並將其移至Mac應用程序,這幾乎沒有時間(因為我使用CGFlat,NSInteger和朋友)。 您將不會收到任何轉換警告(即將64位值移動到32位值)。

將來,由於iOS的普及,很有可能會有使用64位浮點數和整數的處理器。 它的本質是進步。 如果您使用CGFloat和朋友,您的代碼將在通用應用程序上編譯而不會發出警告,因為32位和64位都可以。

如果Apple使用CGFloat,為什么還要擔心它? 使用與您要調用的api調用匹配的類型。 如果CGFloat是內存問題,我們的電話都將崩潰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM