Как проверить ограничение UIWebView в 10 МБ на JavaScript?

Я пытаюсь проверить ограничение в 10 МБ UIWebView для выделения памяти Javascript. Вот мой код, который я запускаю на симуляторе (iOS 5.1).

int size = 10485760+1024000*10; 
int i = 13;
char *cStr = (char *) malloc(size); // 20MB buffer
char *lcStr = cStr;
lcStr+=i;
strcpy(cStr, "window._x = \'");
for ( ; i < size-4; i++){
    if(i%2){
        *lcStr = ' ';
    }else{
        *lcStr = 'c';
    }
    lcStr++;
}
strcpy(lcStr, "c\';\0");

NSString *longStr = [NSString stringWithCString:cStr encoding:NSASCIIStringEncoding];
// by now 40MB used

//memory usage spikes to 60MB
NSString *result = [self.webView stringByEvaluatingJavaScriptFromString: longStr];

free(cStr);

HTML / JS:

<script type="text/javascript">
    setTimeout(function(){document.getElementById("one").innerText = window._x;},3000);
</script>

Моя проблема заключается в том, что приведенный выше код не приводит к тому, что UIWebView генерирует какие-либо исключения, хотя очевидно, что распределение JS в одной точке превышает 10 МБ. Я использовал инструменты, чтобы проверить использование памяти.

Конечным результатом всей программы является то, что я вижу кучу 'c', напечатанных на экране в веб-просмотре, но без сбоев.

Я делаю что-то неправильно? Как я могу проверить это ограничение JS?

1 ответ

Ограничения зависят от устройства. Симулятор не накладывает те же ограничения, что и реальные устройства. Если вы проверите это на iPhone, вы должны увидеть исключение.

Другие вопросы по тегам