簡體   English   中英

iOS上的發布版本和調試版本之間的物理差異

[英]Difference physics between release build and debug build on iOS

我有一個使用Box2D的iOS游戲。 當我在Debug模式下運行它時,一切都很好。 當我在發布模式下運行它時,所有游戲對象都會加速,似乎游戲對象的數量更高或類似的東西。 真奇怪

兩種版本的幀頻幾乎相同,所以這不是問題。 無論如何,游戲中的所有內容都應獨立於幀頻。

知道XCode中的哪個項目設置可能會導致這種情況嗎?

當您在調試中運行時,編譯器不會進行優化,因此二進制文件會大得多,並且代碼通常會執行無用的工作。 在Release中,運行優化器(默認為-Os),積極地尋找縮小代碼的位置。 這是開發人員通常在測試其代碼時應使用Release not Debug的原因之一,而僅在他們確實需要lldb時才切換到Debug。

編輯:所以這里有些事情可能會有所不同。 首先,Box2D是包含的項目還是庫中的鏈接? 如果是第一個,請確保它同時具有“調試”和“發布”配置。 查看您和Box2D的構建設置,並查看是否在一個配置中定義了其他任何內容(即您可能會找到-DSLOW)或正在設置(或未設置標志)的一些define語句。 嗯,調試我通常定義Box2D(甚至您的代碼)可能出於某種目的使用的DEBUG = 1(在預處理器部分)。

如果找不到其他不同的構建設置,則可以通過將Debug配置中使用的值從-O0實際更改為-O1,-O2和= Os來查看優化程序是否正在起作用。 同樣,您可以將“釋放”設置從-Os更改為-O0。

我猜想是原因是Debug配置中的“ DEBUG”設置,Release中的其他一些定義或優化器是原因,並且通過調試和Release來找出問題所在。 實際上,您甚至還可以(臨時)將DEBUG = 1添加到Release配置中。

暫無
暫無

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

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