私は先週、12V マリンとボートのバッテリー使用量を計算する最初のソロ iPhone アプリをリリースしました。シミュレーターと iPhone で精力的にテストし、問題なく動作するようになったら、アプリをアーカイブして Apple にリリースしました。ユーザーがアプリを使い始めたとき、計算が期待どおりに機能していないことに気づきました。NSManagedObject モデルのメソッドである以下のコードは、デバッグ時にリリースされたときに異なる出力を生成していました。
以下は、関連する Discharge 項目の合計を合計する必要がありますが、BBDischarge 項目がない場合はゼロを返す必要があります。代わりに、アイテムがない場合 (したがって for ループが起動しない場合)、domesticAH (NSNumber) の直積である数値を返します。私がdomesticAHを100に設定すると、以下のdischargeAHは8を返し、domesticAHを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 からダウンロードしたアプリのインスタンスにアタッチしますか?
- アーカイブからのインストールをシミュレートする方法はありますか?これを行うためにアドホック配布を推奨する人はいますか? 私はまだアドホックを使用していません。
- これがこのように動作する理由は他にありますか?