0

AWSサーバーからの画像を表示するアプリを作成しました。iPhone 4以前では正常に動作していますが、iPhone 5でアプリを実行すると、wifiまたは3G接続を使用して実行するとアプリがクラッシュします。S3GetObjectを使用したときに表示される多くのテストを行いました...

3GetObjectResponse *getObjectResponse = [[AmazonClientManager s3] getObject:getObjectRequest];

UIImage *tampon = [[UIImage alloc] initWithData:getObjectResponse.body];

アプリがクラッシュします。AWS-SDKがiOS6と互換性があるかどうかわかりません。助けてください。

4

2 に答える 2

2

他の質問の1 つに基づいて、GTMLogger ライブラリが含まれているためにリリース用にビルドしたときにクラッシュの問題があった古いバージョンの AWS SDK for iOS がまだ含まれている可能性があります。

AWS SDK for iOS の以前のバージョンへの参照をすべて削除し、プロジェクトのフレームワーク インクルード パスも更新してください。

から返された値をログに記録することで、SDK の最新バージョンを使用していることを確認できます。

[AmazonSDKUtil userAgentString]
于 2012-11-04T01:43:10.790 に答える
2

Grand Central Dispatch で AWS SDK を使用getObject:し、同じスレッドで同期および更新 UI を呼び出しているようです。getObject:バックグラウンド スレッドで呼び出し、メイン スレッドで UI を更新する必要があります。コードは次のようになります。

dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

    for(int i=0;i<ads.count;i++){

        NSString *phot =[ads objectAtIndex:i];
        NSLog(@"hna%@",phot);
        S3GetObjectRequest  *getObjectRequest  = [[S3GetObjectRequest alloc] initWithKey:phot   withBucket:@"olfactifPhoto"];
        S3GetObjectResponse *getObjectResponse = [[AmazonClientManager s3] getObject:getObjectRequest];

        dispatch_async( dispatch_get_main_queue(), ^{

            UIImage *tampon = [[UIImage alloc] initWithData:getObjectResponse.body];
            UIImageView *tempImageView = [[UIImageView alloc] initWithImage:tampon];
            tempImageView.frame = CGRectMake(10,currentXLocation, 300, 310);

            NSLog(@" il est dans la position %f",tempImageView.frame.origin.y);
            self.monImage = tempImageView;

            [scroll addSubview:monImage];
        });
    }

});
于 2012-11-02T23:13:31.583 に答える