writeImageDataToSavedPhotosAlbum резко замедляется после нескольких использований - PullRequest
1 голос
/ 02 июня 2011

Я сохраняю изображения в фотоальбом iPhone с помощью API "writeImageDataToSavedPhotosAlbum".Однако после нескольких использований (например, 4), каждый раз для сохранения требуется примерно вдвое больше времени.

Я создал тестовый метод для его воспроизведения, при котором каждый раз сохраняется одно и то же изображение.Метод заключается в следующем:

-(IBAction)testButton {
    NSData *data = [NSData dataWithContentsOfFile:[[self photosDirectory] stringByAppendingPathComponent:[[self contentsOfPhotoDirectory] objectAtIndex:0]]];
    ALAssetsLibrary *al = [[ALAssetsLibrary alloc] init];
    __block NSDate *date = [[NSDate date] retain];
    [al writeImageDataToSavedPhotosAlbum:data metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) {
        NSLog(@"Saving Time: %g", [[NSDate date] timeIntervalSinceDate:date]);
        [date release];
    }];
    [al release];
}

На недавно перезагруженном iPhone 4 я получаю следующее время сохранения.

2011-06-01 21:23:13.641 myapp[95:707] Saving Time: 5.30819
2011-06-01 21:23:17.101 myapp[95:707] Saving Time: 1.5311
2011-06-01 21:23:21.916 myapp[95:707] Saving Time: 2.52412
2011-06-01 21:23:25.974 myapp[95:707] Saving Time: 2.85623
2011-06-01 21:23:32.275 myapp[95:707] Saving Time: 4.93484
2011-06-01 21:23:42.024 myapp[95:707] Saving Time: 7.93288
2011-06-01 21:24:00.317 myapp[95:707] Saving Time: 15.8561
2011-06-01 21:24:33.199 myapp[95:707] Saving Time: 29.7571

Что не так?

Ответы [ 2 ]

2 голосов
/ 02 июня 2011

Возможно, проблема в том, что вы используете память, а не освобождаете ее, поэтому в дальнейшем при сохранении генерируется много предупреждений о памяти ... это именно то, что инструменты Time Profiler и Object Alloc должны быть в состоянии вам помочь , выясняя, почему это замедляется после нескольких изображений.

В моем собственном приложении я не думаю, что видел много замедления после повторных снимков.

0 голосов
/ 20 апреля 2012

Используйте ARC для управления памятью.Я использую этот метод сохранения в приложении камеры, которое я пишу, и у меня нет таких проблем, как у вас.

...