簡體   English   中英

限制Xcode中iOS應用程序的可用內存

[英]Limit available memory to iOS app in Xcode

我很好奇是否可以在調試時將可用內存限制在Xcode中的iOS應用程序中。 我的應用程序能夠使用AVCapture記錄臨時視頻,我想測試用戶的iDevice上是否有足夠的內存,同時記錄並處理didReceiveMemoryWarning的異常。 謝謝。

編輯:我忘了提到我使用的是實際設備,但我擁有64GB版本,所以它可能需要一些時間才能達到這個限制,我希望最終用戶將是擁有8GB iPhone的年輕人。

如果你想檢查可用的Ram(didReceiveMemoryWarning)答案是否定的,iOS確定自己可用的內存。 根據Apple文檔,您需要使用實際設備。

盡管iOS模擬器是一個有用的工具,但永遠不要讓它成為測試應用程序的唯一方式。 由於iOS模擬器是在Mac上運行的應用程序,因此它可以訪問計算機的內存,該內存遠遠大於設備上的內存。 由於內存增加,iOS模擬器不能准確測試應用程序的內存使用情況。 出於同樣的原因,請始終在設備上測試應用程序用戶界面的性能。 在iOS模擬器中,您的應用程序的用戶界面可能看起來比在設備上運行更快,更流暢。

但是,如果你想檢查設備上的可用空間 - 它可以完成!

-(uint64_t)getFreeDiskspace {
    uint64_t totalSpace = 0;
    uint64_t totalFreeSpace = 0;
    NSError *error = nil;  
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
    NSDictionary *dictionary = [[NSFileManager defaultManager] attributesOfFileSystemForPath:[paths lastObject] error: &error];  

    if (dictionary) {  
        NSNumber *fileSystemSizeInBytes = [dictionary objectForKey: NSFileSystemSize];  
        NSNumber *freeFileSystemSizeInBytes = [dictionary objectForKey:NSFileSystemFreeSize];
        totalSpace = [fileSystemSizeInBytes unsignedLongLongValue];
        totalFreeSpace = [freeFileSystemSizeInBytes unsignedLongLongValue];
        NSLog(@"Memory Capacity of %llu MiB with %llu MiB Free memory available.", ((totalSpace/1024ll)/1024ll), ((totalFreeSpace/1024ll)/1024ll));
    } else {  
        NSLog(@"Error Obtaining System Memory Info: Domain = %@, Code = %@", [error domain], [error code]);  
    }  

    return totalFreeSpace;
}

但請記住,當系統達到某個可用空間點時,iOS會自動清理iOS緩存文件夾。 因此,手動填充它非常困難。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM