Ich versuche, AmazonS3Client zu PutObject zu verwenden. Das Seltsame ist, es scheint nur zu funktionieren, wenn ich meinen putObject-Code auf dem iOS-Hauptthread ausführe.AmazonS3Client putObject funktioniert nur auf iOS Hauptthread?
Der Code ist im Grunde wie folgt:
-(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];
}
Der Eimer existiert, ich Berechtigungen usw. Wenn ich einfach
[self uploadVideoToS3]
in meinem Code nennen (was aus dem Haupt-Thread ist) , die ganze Video-Upload-Methode läuft (ich habe einige NSLogs, um dies zu beweisen), aber ich bekomme nie Status-Callbacks, keine Ausnahmen werden geworfen, und das Objekt wird niemals in seinen Bucket auf S3 gestellt.
Wenn ich die Upload-Funktion auf dem Hauptthread nennen wie so:
dispatch_async(dispatch_get_main_queue(), ^(void) {
[self uploadVideoToS3];
});
ich Rückrufe erhalten Fortschritt, alles funktioniert, und das Objekt erfolgreich in die S3 Eimer gelegt wird.
Weiß jemand, ob putObject nur auf dem Hauptthread von iOS funktioniert? Wenn das der Fall ist, wäre das unglücklich, da es normalerweise der UI-Thread ist.
Danke, Kevin
P. S. Ich habe versucht, den Funktionsaufruf auf einem Nicht-Hauptthread mit dem gleichen gescheiterten Ergebnis zu senden.
mit welchem Code haben Sie versucht, es in einen anderen Thread zu versenden? – Pochi
'dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),^{[Selbst-UploadVideoToS3]});' – kevlar
fand einen interessanten Artikel auf der AWS-Website. Verwenden Sie dispatch_async möglicherweise das Problem. Nicht sicher, aber hier gehst du -> Vermeiden Sie so oft wie möglich mit dispatch_sync auf dem Haupt-Thread .http: //mobile.awsblog.com/post/Tx1ZZHQHSD0O3SF/Using-the-AWS-SDK-for-iOS-Asynchron- Teil-IV-Grand-Central-Dispatch-GCD-Best –