1

API「writeImageDataToSavedPhotosAlbum」を使用して、画像をiPhoneのフォトアルバムに保存します。ただし、数回 (4 回など) 使用すると、毎回の保存に約 2 倍の時間がかかります。

それを再現するためのテスト方法を作成しました。毎回まったく同じ画像が保存されます。方法は次のとおりです。

-(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

なにが問題ですか?

4

2 に答える 2

2

おそらく問題は、メモリを使用していて解放していないことです。後で保存すると、多くのメモリ警告が生成されます...これはまさに、Time Profiler および Object Alloc インスツルメントが役立つはずの種類のものです。ほんの数枚の画像で遅くなる理由。

私自身のアプリでは、繰り返し撮影した後にそれほど減速したとは思いません。

于 2011-06-02T02:59:42.690 に答える
0

メモリ管理には ARC を使用します。私が書いているカメラアプリでこの保存方法を使用していますが、あなたのような問題はありません。

于 2012-04-20T08:02:38.820 に答える