Я пытаюсь использовать AmazonS3Client для размещения объекта. Странно то, что это работает только тогда, когда я запускаю свой код putObject в основном потоке iOS.
Код примерно такой:
-(void)uploadVideoToS3
{
S3PutObjectRequest * videoPOR = [[S3PutObjectRequest alloc] initWithKey:video.onlineVideoID inBucket:video.onlineVideoBucketName];
videoPOR.contentType = @"video/quicktime";
videoPOR.data = [NSData dataWithContentsOfURL:video.convertedVideoLocalURL];
videoPOR.delegate = self;
// Put the thumbnail and video into the specified s3
AmazonS3Client * s3 = [AmazonClientManager s3];
[s3 putObject:videoPOR];
[videoPOR release];
}
Ведро существует, у меня есть права и т. д. Если я просто позвоню
[self uploadVideoToS3]
в моем коде (, который находится вне основного потока ), выполняется весь метод загрузки видео (У меня есть несколько NSLog, чтобы доказать это ), но я никогда не получаю никаких обратных вызовов статуса, никаких исключений не выдается, и объект никогда не помещается в свою корзину на S3.
Когда я вызываю функцию загрузки в основном потоке, вот так:
dispatch_async(dispatch_get_main_queue(), ^(void) {
[self uploadVideoToS3];
});
Я получаю обратные вызовы прогресса, все работает, и объект успешно помещается в корзину S3.
Кто-нибудь знает, работает ли putObject только в основном потоке iOS? Если это так, это было бы прискорбно, поскольку обычно это поток пользовательского интерфейса.
Спасибо, Кевин
P.S. Я попытался отправить вызов функции в основной поток, отличный от -, с тем же неудачным результатом.