2015-03-01 2 views
0

Мне любопытно, можно ли ограничить доступную память к iOS-приложению в Xcode во время отладки. Мое приложение может записывать временные видео с помощью AVCapture, и я бы хотел проверить, достаточно ли памяти на iDevice пользователя во время записи и обработки исключения внутри didReceiveMemoryWarning. Благодарю.Ограничить доступную память для приложения iOS в Xcode

EDIT: Я забыл упомянуть, что использую фактическое устройство, но у меня есть версия на 64 ГБ, поэтому для достижения этого предела может потребоваться некоторое время, и я ожидаю, что конечными пользователями станут молодые люди с 8-гигабайтными iPhone.

+0

вы можете отправить сообщение с памятью из меню симулятора ... но что касается имитации доступного барабана устройства ... вам просто нужно попробовать –

+0

Не можете ли вы проверить на устройстве? – Wain

ответ

0

Если вы хотите проверить доступный Ram (didReceiveMemoryWarning) Ответ №. IOS определяет самостоятельно доступную память. Согласно документации Apple, вам необходимо использовать фактическое устройство.

Несмотря на то, что iOS Simulator - полезный инструмент, никогда не делайте его единственным способом. вы тестируете приложение. Поскольку iOS Simulator - это приложение, работающее на Mac, оно имеет и имеет доступ к памяти компьютера, которая намного больше, чем память , найденная на устройстве. В результате увеличения объема памяти iOS Simulator не является точной проверкой использования памяти приложения. Для этого та же причина, всегда проверяйте производительность пользовательского интерфейса вашего приложения на устройстве. В iOS Simulator пользовательский интерфейс вашего приложения может выглядеть , который работает быстрее и плавнее, чем на устройстве.

Но, если вы хотите проверить свободное пространство на устройстве - это можно сделать!

-(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, когда система достигнет определенной точки свободного пространства. Таким образом, это очень сложно сделать вручную.

+0

Спасибо. Я забыл упомянуть, что я использую фактическое устройство, но у меня есть версия на 64 ГБ, поэтому для достижения этого предела может потребоваться некоторое время, и я ожидаю, что конечными пользователями станут молодые люди с 8-гигабайтными iPhone. – skornos

+0

Смотрите мое обновление, пожалуйста. – Taier

Смежные вопросы