我上週發佈了我的第一個獨奏iPhone應用程序,計算12V Marine and Boat Battery usage。我已經在模擬器和iPhone上進行了大力測試,當我感覺舒適時,一切都很好,我將應用程序歸檔併發布給Apple。當用戶開始使用該應用程序時,他們注意到計算未按預期工作。下面的代碼是NSManagedObject模型中的一個方法,它在釋放時調試時產生一個DIFFERENT輸出。將iPhone應用浮點計算髮布到應用商店時。
下面應該總結相關放電項目的總數 - 但如果沒有BBDischarge項目,則應該返回零。相反,當沒有項目(因此for循環不會觸發)時,它會返回一個數字,它是家用AH(NSNumber)的直接產品。如果將家用AH設置爲100,則下面的放電量AH返回8,如果將家用電器AH設置爲1000,則返回83(當顯示時,浮點值被舍入)。再一次,我強調在模擬器上運行時,下面的工作很好,或者直接放到我的iPhone 4s上,只有通過應用商店發佈後才能完成。
//Other dynamics hidden for simplicity
@dynamic domesticAH;
@dynamic voltage;
@dynamic profileDischarge;
-(NSNumber*) dischargeAmpH
{
float totalWattsPD;
//Calculate the watts per day so we can accurately calculate the percentage of each item line
for(BBDischarge* currentDischarge in self.profileDischarge)
{
float totalWatt = [currentDischarge.wattage floatValue] ;
float totalMinsPD = [currentDischarge.minutesPD floatValue]/60;
float totaltimesUsed = [currentDischarge.timesUsed floatValue];
float numberInOperation = [currentDischarge.number floatValue];
totalWattsPD = totalWattsPD + ((totalWatt * totalMinsPD) * (totaltimesUsed * numberInOperation));
}
int voltage = ([self.voltage integerValue] + 1) * 12;
float totalAmpsPD = totalWattsPD/voltage;
return [NSNumber numberWithFloat:totalAmpsPD];
}
正如你所看到的,self.domesticAH未在方法特徵的任意位置,因爲我無法重新創建這個在模擬器上,我有一個很難跟蹤下來。
幾個問題:
- 我可以調試我的應用程序的真人版?將XCode附加到我正在運行的App Store下載的應用程序實例?
- 有沒有一種方法可以模擬從存檔安裝 - 任何人都會推薦臨時分發來做到這一點?我還沒有使用特設。
- 任何其他想法,爲什麼這可能會以這種方式表現?
嘗試,看看(在你的項目目標)的調試之間的性差異和釋放..做一些測試..創建IPA文件..have的一些行爲? – TonyMkenu
託尼,你好,謝謝你的提示。在Ad Hoc中,錯誤依然存在!這太好了,意味着我至少可以測試一下,看看我能否在重新發布之前消除這個bug。你可以指向我的任何構建設置?代碼簽名在版本上有所不同,在發佈版本中,所有調試符號都被刪除,並且代碼被優化。還有什麼我應該看看那裏? – MagicalArmchair
檢查此...關於「可憐的浮點性能」 http://www.mindjuice.net/2011/11/30/how-to-fix-an-app-that-crashes-in-release-but- not-debug/ – TonyMkenu