writeImageDataToSavedPhotosAlbum在几次使用后显着减慢

时间:2011-06-02 02:27:08

标签: iphone ios ios4 assetslibrary

我使用api“writeImageDataToSavedPhotosAlbum”将图像保存到iPhone的相册中。但是,经过多次使用(例如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 个答案:

答案 0 :(得分:2)

问题可能是你正在使用内存并且没有释放它,所以后来的保存产生了很多内存警告......这正是Time Profiler和Object Alloc仪器应该能够帮助你的事情。 ,弄清楚为什么它只是在几张图像后减速。

在我自己的应用程序中,我不认为在重复拍摄后我看到了那么多的减速。

答案 1 :(得分:0)

使用ARC进行内存管理。我正在使用这种保存在我正在编写的相机应用程序中的方法,并且没有像你这样的问题。