2012-01-27 13 views
28

Jedna z moich aplikacji bardzo rzadko będzie zgłaszać przechowywanie (przez Ustawienia -> Ogólne -> Użycie -> Pamięć) jako 4 GB, gdy w rzeczywistości całkowity rozmiar wszystkich plików w aplikacji Sandbox (Documents, Library, tmp) waży około 10 MB.Zgłaszanie aplikacji niedokładne Użycie/przechowywanie

Jestem trochę na wyczerpaniu i zastanawiam się, czy ktoś nie doświadczył czegoś takiego. Mam podejrzane podejrzenia, że ​​jest to coś związanego z UIDocumentem, ale nie mogę być tego pewien. Wygląda na to, że zbyt mało jest teraz, aby złożyć radar.

W niektórych przypadkach aplikacja zmusi system do wyświetlenia okna dialogowego z ostrzeżeniem użytkownika, że ​​systemowi brakuje pamięci. Kiedy tak się dzieje, wydaje się, że system uzgadnia różnicę między pamięcią, o której myśli, że używa aplikacji, a rzeczywistością, a liczba pamięci spadnie z powrotem do 10 MB.

To naprawdę dziwne.

Wszelkie pomysły na rzeczy, które mógłbym zobaczyć, zostałyby docenione.

Realizacja contentsForType: error:

- (id) contentsForType: (NSString *) inTypeName 
    error: (NSError **) outError 
{ 
    NSFileWrapper  *newWrapper, *audioFileWrapper; 
    NSString   *audioFilename; 
    NSURL    *newAudioWrapperURL; 

    newWrapper = [[[NSFileWrapper alloc] initDirectoryWithFileWrappers: nil] autorelease]; 

    // add updated info 
    [newWrapper addRegularFileWithContents: [NSKeyedArchiver archivedDataWithRootObject: self.testInfo] preferredFilename: QSDocumentInfoKey]; 

    // scan audio files and clean up where needed 
    for (NSDictionary *wordInfo in self.wordInfoList) { 
     if ((audioFilename = [wordInfo objectForKey: QSInfoAudioKey]) != nil) { 
      newAudioWrapperURL = [self.fileURL URLByAppendingPathComponent: audioFilename]; 
      if ([[NSFileManager defaultManager] fileExistsAtPath: [newAudioWrapperURL path]]) { 
       audioFileWrapper = [[[NSFileWrapper alloc] initWithURL: newAudioWrapperURL options: 0 error: nil] autorelease]; 
       [newWrapper addFileWrapper: audioFileWrapper]; 
      } 
     } 
    } 

    self.fileWrapper = newWrapper; 

    return self.fileWrapper; 
} 
+0

W jaki sposób przechowujesz dane aplikacji? – jrtc27

+0

Co robi aplikacja (nie potrzebujesz szczegółowych informacji)? Czy coś kupujesz? Pobierz cokolwiek. Każdy powód, dla którego coś pójdzie nie tak, tablica lub jakaś inna rzecz, którą spisujesz, stają się bardzo duże? Czy dzieje się to również na symulatorze? – Ali

+0

Zapisywanie plików za pomocą UIDocument za pomocą NSFileWrapper. Kolejna osobliwa rzecz: nawet nie musiałem niczego oszczędzać, żeby to się stało. Ostatnia próba zapisania informacji mogła nastąpić kilka godzin lub dzień temu, a stanie się to po prostu przypadkowo. –

Odpowiedz

1

Widziałem to z TestFlight SDK. Usunięcie użycia TestFlight powinno rozwiązać ten problem.