0

我制作了一个显示来自 AWS 服务器的图像的应用程序。它适用于 iPhone 4 及更早版本,但是当我在 iPhone 5 上运行我的应用程序时,应用程序在使用 wifi 或 3G 连接运行时崩溃。当我使用 S3GetObject 时,我做了很多测试...

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

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

应用程序崩溃,我不知道AWS-SDK是否与iOS 6兼容,请帮助我。

4

2 回答 2

2

看起来您正在使用带有 Grand Central Dispatch 的 AWS 开发工具包,并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 回答
2

根据您的其他问题之一,您似乎仍然包含旧版本的适用于 iOS 的 AWS 开发工具包,由于包含 GTMLogger 库,该版本在为发布而构建时存在崩溃问题。

请确保删除对适用于 iOS 的 AWS 开发工具包以前版本的任何引用,并更新您的项目框架包含路径。

您可以通过记录从返回的值来确认您使用的是最新版本的 SDK

[AmazonSDKUtil userAgentString]
于 2012-11-04T01:43:10.790 回答