Прекращение работы из-за ошибки памяти для пользовательского расширения клавиатуры ios 8

Я разрабатываю пользовательское расширение клавиатуры iOS 8. Он работает как шарм.

Но я всегда получаю предупреждение о получении памяти в Xcode. Поэтому мое пользовательское расширение клавиатуры иногда внезапно прекращает работу.

Но я запускаю пользовательскую клавиатуру в ее хост-приложении. Там нет никаких проблем. Не получайте предупреждение о получении памяти в Xcode. Не прекращайте.

Кто-нибудь может мне помочь? Если у приложения есть какой-либо предельный размер для использования расширения?

Прекращено из-за ошибки памяти


person Rick Wu    schedule 17.08.2014    source источник
comment
Я использую github.com/Split82/iOSMemoryBudgetTest для тестирования своего устройства (ipad 3 wifi). Приложение аварийно завершает работу, когда память достигает 600 МБ. Но моему пользовательскому расширению клавиатуры нужно всего почти 30M. iOS по-прежнему выдает предупреждение о памяти. Есть ли документ об этой проблеме?   -  person Rick Wu    schedule 18.08.2014
comment
Я сделал больше теста. Я добавляю iOSMemoryBudgetTest в свою пользовательскую клавиатуру. Я получил пользовательское расширение клавиатуры, которое раздавит 40M!   -  person Rick Wu    schedule 18.08.2014
comment
Я действительно не знаю, проблема только в iOS beta 5. Или официальная версия решит эту проблему?   -  person Rick Wu    schedule 18.08.2014
comment
возможный дубликат Можно ли отлаживать завершено из-за памяти ошибка?   -  person Andrew    schedule 22.08.2014
comment
@ Санта-Клаус, нет. В этой теме обсуждается приложение, а не расширение   -  person Rick Wu    schedule 23.08.2014
comment
Попробуйте то, что он предлагает. Это должно работать так же.   -  person Andrew    schedule 23.08.2014


Ответы (2)


Apple упоминает в своем Руководстве по программированию расширений приложений, что ограничения памяти для расширений приложений значительно ниже, чем ограничения, установленные для приложений переднего плана. Кроме того, некоторые типы расширений могут иметь более низкие ограничения, чем другие.

Насколько я могу судить, Apple не указывает явно эти ограничения памяти, и неясно, зависят ли они от устройства и сколько памяти потребляют другие приложения. Но, как упомянул Итан, для расширений клавиатуры вы должны стремиться к размеру менее 30 МБ, чтобы избежать сбоев.

Также важно протестировать расширение, когда оно не запускается в Xcode или используется конфигурация отладочной сборки. Кажется, что ограничения памяти для отладочных сборок намного выше.

person Jeff Ames    schedule 30.10.2014
comment
Раздражает, что Apple скромничает. Apple, просто скажи нам, какой чертов предел! - person Mark Johnson; 19.03.2015
comment
что вы будете делать, если Apple даст вам limite? контролировать использование памяти вашего приложения, и если оно достигнет X МБ, вы что-то сделаете? у вас уже есть предупреждение .. - person Red Mak; 19.05.2016
comment
Вы можете увидеть фактическое ограничение в вашем Xcode. Прикрепите отладчик к вашему расширению, запустите его, перейдите в Debug Navigator › Memory и посмотрите график (график). Предел появляется там, если вы приближаетесь к нему. В моем расширении каталога вызовов ограничение составляет 12 МБ, что отлично подходит для моих десятков тысяч телефонных номеров. Большое спасибо Apple. - person Štěpán Havránek; 13.02.2020
comment
Принтскрин, где вы можете увидеть лимит памяти: eway.cr/xcoderamlimit - person Štěpán Havránek; 13.02.2020

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

person Ethan Long    schedule 03.09.2014
comment
мое сегодняшнее расширение использует только 3 МБ, но все равно получило эту ошибку, знаете почему? - person TomSawyer; 02.06.2015
comment
То же самое и здесь, чувак... Я считаю, что проблема с отладчиком, а не с нехваткой памяти. Трудно отлаживать расширения... - person Abdul Yasin; 18.12.2018