現在有一個iPhone 64位架構。 long
變成了64位(而int
仍然是32位),並且到處使用NSInteger現在是long
,所以64位不是32.並且twitter有不少人說:「我很高興我已經使用NSInteger到處不是int「。NSInteger應該到處使用嗎?
如果你需要存儲一個不超過32位的值(例如在一個只循環25次的循環中),爲什麼應該使用一個long,因爲32位(至少)高位將會空着。
如果程序在32位整數上工作,那麼使用64位整數提供什麼好處,當它佔用更多的內存?
同樣會出現使用64位整數給出使用32位整數的不同結果的情況。因此,如果您使用NSInteger,那麼iPhone 5S上可能會有某些功能,但不會在較舊的設備上使用,而如果明確使用了int或long,那麼結果在任何設備上都是相同的。
你的第二個回答「你使用更多的內存看起來像一件壞事」正是我一直在尋找的答案。不幸的是,由於我沒有計算機科學背景,它完全在我頭上。有沒有一個例子可以說明如何在64位空間中存儲數字「3」實際上加快了應用程序的速度?我同意喬納森的看法,這似乎是對空間的巨大浪費,而且效率非常低下。 –
這與「MOV」指令完全相同。這不是導致加速的任意小操作,而是處理器總線上可以傳輸的數據量,這會導致差異。這類似於擁有4車道高速公路而不是2車道,然後試圖舉行怪物卡車拉力賽。你可以安裝更多的小型數據(比如普通汽車),並且可以擠進那些大卡車,而不必依靠將數據截斷並依次運行。 – CodaFi
好啊,類比。我喜歡。所以用你的比喻,是不是使用「長」來表示一小部分,就像駕駛一輛只有一個孤獨的小孩在後面的大巴士一樣?它佔用與包裝公交車相同數量的空間,但額外的空間被浪費了。 (再次想到,也許這個比喻讓我感到困惑。)我覺得我並沒有抓住一些非常基本的東西,但似乎即使它是完全相同的'MOV'指令,'MOV'存儲在64位空間的長度是存儲在32位空間中的兩倍? –