1

同期アルゴリズムを実行するアプリがあります。

ビルドしてデバッグ モードで (iPhone 5 に) 実行すると、すべて正常に動作します。

ただし、アーカイブして TestFlight にアップロードし、同じ iPhone 5 にダウンロードしてインストールすると、同期の一部が機能しません。

クラッシュなどはありません。同期のその部分が実行されないだけです。

ばかげたことは、それが実行されていない単一の関数内のコード行であることです。その関数の他のすべては実行されます。

これをどこから探し始めればよいかわかりません。

編集

Mindaugas の助けを借りて、実行されていないコードの正確な理由とビットを特定しました。

機能は...

- (void)uploadData
{
    NSLog(@"pushing photos");
    for (StoredImage *storedImage in self.recordArray) {
        NSURL *url = [self urlForImageUpload:storedImage];

        if (url == nil) {
            continue;
        }

        ImageUploadOperation *uploader = [[OJFImageUploadOperation alloc] init];
        uploader.image = storedImage.image;
        uploader.url = url;
        [self.recordQueue addOperation:uploader];
    }
}

最適化レベルを「最速、最小」に設定すると、この関数の順序が乱れるようです。

入ると、配列に単一のオブジェクトがあり、ループに入ることがわかります。しかし、その後、最初の行を完全にスキップNSURL *url = [self urlForImageUpload:storedImage];して最後まで進みます。そのため、アップロードは実際には開始されず、次のアイテムに移動します。

4

1 に答える 1

9

デフォルトでは、リリース構成はデバッグ構成とは異なるコード最適化を使用するため、一部のコード行を最適化してスキップできます

Target -> Build Settings -> search for Optimization Level で構成を確認/変更できます

于 2013-04-02T10:09:12.467 に答える