2012-01-27 4 views
28

Một trong các ứng dụng của tôi, rất thường xuyên, báo cáo Bộ nhớ của nó (thông qua Cài đặt -> Chung -> Cách sử dụng -> Bộ nhớ) dưới dạng 4GB khi, trên thực tế, tổng kích thước của tất cả các tệp trong ứng dụng Sandbox (Documents, Library, tmp) trung bình khoảng 10MB hoặc hơn.Báo cáo ứng dụng không chính xác Cách sử dụng/Lưu trữ

Tôi sắp kết thúc và tự hỏi liệu có ai đã trải nghiệm bất cứ điều gì như thế này không. Tôi có một nghi ngờ lén lút rằng đó là một cái gì đó liên quan đến UIDocument, nhưng không thể chắc chắn. Nó có vẻ như quá ít để tiếp tục ngay bây giờ để tạo ra một radar.

Trong một số trường hợp, ứng dụng sẽ buộc hệ thống hiển thị hộp thoại cảnh báo người dùng rằng hệ thống sắp hết bộ nhớ. Khi điều này xảy ra có vẻ như hệ thống điều chỉnh sự khác biệt giữa dung lượng lưu trữ mà ứng dụng đang sử dụng và thực tế và số lưu trữ sau đó sẽ giảm xuống 10MB hoặc lâu hơn.

Thật kỳ lạ.

Bất kỳ ý tưởng nào về những điều tôi có thể xem sẽ được đánh giá cao.

Việc thực hiện contentsForType: lỗi:

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

Bạn đang lưu trữ dữ liệu của ứng dụng như thế nào? – jrtc27

+0

Ứng dụng của bạn làm gì (không cần chi tiết cụ thể)? Bạn có kiếm tiền gì không? Tải xuống mọi thứ. Bất kỳ lý do gì đó có thể đi sai một mảng hoặc một số thứ khác mà bạn viết xuống sẽ rất lớn? Liệu nó có xảy ra trên giả lập không? – Ali

+0

Lưu tệp qua UIDocument bằng NSFileWrapper. Một điều kỳ lạ khác: Tôi thậm chí không phải tiết kiệm bất cứ điều gì cho việc này xảy ra. Nỗ lực cuối cùng để lưu trữ thông tin có thể là giờ hoặc một ngày trước và điều này sẽ chỉ xảy ra ngẫu nhiên. –

Trả lời

1

Tôi đã nhìn thấy điều này với các TestFlight SDK. Việc xóa sử dụng TestFlight sẽ giải quyết vấn đề này.