Когда очищается кеш приложения iPhone? - PullRequest
1 голос
/ 23 мая 2011

Я работаю над приложением, которое позволяет пользователям записывать голос (среди прочего) в каталог документов приложения. Но когда я записываю голос, я записываюсь в каталог caches приложения, а затем, когда пользователь говорит «Хорошо, сохрани этот», я копирую его в каталог Documents. Пока что все это работает. Но если я пытаюсь удалить файл данных в кеше или когда я пытаюсь переместить его, у меня возникают проблемы.

Итак, мой вопрос: я просто оставлю данные в кеше, чтобы iOS их обработал, или мне нужно вручную удалить файлы в кеше. Если так, то как бы я поступил так? Это код, который у меня есть (который не работает)

    NSFileManager *fm = [NSFileManager defaultManager];
    NSString *directory = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
    NSError *error = nil;
    BOOL success = [fm removeItemAtPath:[NSString stringWithFormat:@"%@%@", directory, currentEntry.audioFileURL] error:&error];
    if (!success || error) {
        // it failed.
        NSLog(@"it failed to delete!!! %@ %@", error, [error userInfo]);
    } else {
        NSLog(@"Deleted... yipee... !!!");
    }

1 Ответ

6 голосов
/ 23 мая 2011

Я думаю, проблема в том, что ваш путь неверен. Всегда используйте

- (NSString *)stringByAppendingPathComponent:(NSString *)aString

метод NSString.

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

UPD: Другое дело, что NSCachesDirectory на самом деле никогда не очищается. Используйте NSTemporaryDirectory(), если вы хотите автоматическую очистку.

...