2013-03-20 6 views
4

Предусмотрены уровни предупреждения 1 и 2 уровня для приложения iOS. Вопрос касается всех iPad-устройств (от iPad 1 до iPad 4, mini), что является пороговым значением ответа для отправки предупреждений. Например, для iPad1 это 100 МБ?Значение порога предупреждения об ошибке памяти для всех версий iPad

Благодаря


Я также использовал для распечатки памяти, используемой при получении предупреждения памяти.

#import "mach/mach.h" 
-(void) report_memory { 

    struct task_basic_info info; 
    mach_msg_type_number_t size = sizeof(info); 
    kern_return_t kerr = task_info(mach_task_self(), 
            TASK_BASIC_INFO, 
            (task_info_t)&info, 
            &size); 
    if(kerr == KERN_SUCCESS) { 
     DLog(@"Memory in use (in MB): %u", info.resident_size/1024/1024); 
    } else { 
     DLog(@"Error with task_info(): %s", mach_error_string(kerr)); 
    } 
} 
+1

Имеет ли это значение? Если вы видите предупреждение памяти уровня 1, ваше приложение имеет очень мало времени, чтобы очистить его действие до того, как будет выпущен уровень 2, и ваше приложение будет уничтожено. –

+0

Если вы нуждаетесь в поддержке всех разных устройств, и у вас будет серьезная проблема с памятью, например, всегда выталкивайте предупреждение о памяти, и ваш босс отбрасывает задницу, как вы думаете? Инструмент может дать вам представление о том, сколько реального использования памяти, и нам нужно подумать о решении по оптимизации, особенно для iPad1. Да, это важно. – Forrest

ответ

5

Я не думаю, что это официально задокументированы Apple, главным образом потому, что она может изменить между версиями IOS , но это цифры, указанные в таблице "Learn iPhone and iPad cocos2d Game Development":

+-----------------------------------------------------------------+ 
| Installed Memory | Available Memory | Memory Warning Threshold | 
+-----------------------------------------------------------------+ 
| 128 MB   | 35-40 MB   | 20-25 MB    | 
| 256 MB   | 120-150 MB  | 80-90 MB    | 
| 512 MB   | 340-370 MB  | 260-300 MB (estimated) | 
+-----------------------------------------------------------------+ 
+0

Я предполагаю, что это для iOS 6 - кто-нибудь обновил данные для iOS 7? Спасибо за вашу помощь. – Colen

3

Из практики и памяти ... IPad 1 запустит 1-го уровня на отметке 16Мб и, возможно, перейти на уровень 2 примерно 32mb. iPad 2/3/mini кажется ОК до 50 МБ до 64 МБ. iPad 4 У меня действительно нет убедительных результатов, но из спецификации, которую я ожидал бы до 100-128Mb, прежде чем все начнет жаловаться.

Это то, что я наблюдал в приборах, по крайней мере, во время тестирования. Я взял для запуска макроса, чтобы обнаружить тип устройства и изящно отступить, чтобы поддерживать старые устройства, отключив кварцевые рисунки, тяжелые изображения и т. Д.

Снова эти aren; t твердые фигуры из любых спецификаций только мои выводы от тестирования.

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

+ (BOOL)isiPad1 { 
    struct utsname platform; 
    int rc = uname(&platform); 
    if(rc == -1) return NO; 
    return !strcmp("iPad1,1", platform.machine); 
} 
+0

цифры хороши, но в конечном счете (как предупреждение) :: это деталь реализации и МОЖЕТЕ зависеть от os или даже от no. приложений –

+0

Я абсолютно согласен, я рекомендую регулярно проверять, чтобы оставаться в курсе производительности, особенно в версиях iOS. – Cocoadelica

+0

Oooh thats nice! Хорошая статья – Cocoadelica