Несколько узлов в модели .scn приводят к сбою расширения iMessage - PullRequest
0 голосов
/ 17 сентября 2018

Я работаю со SceneKit в расширении iMessage и столкнулся со странным маленьким зверьком проблемы. Я пытаюсь визуализировать пользовательскую модель scn и узлы буровой установки в соответствии с выражением лица пользователя, используя привязки смешанной формы. Я могу сделать это успешно в приложении для iOS, из которого вышло это расширение iMessage без проблем. Однако после помещения в MessageViewController программа завершает работу с кодом 0 каждый раз, когда я пытаюсь его запустить.

Я немного покопался, и кажется, что «выход с кодом 0» указывает на перегрузку памяти, поэтому я начал играть с узлами моих моделей. Я обнаружил, что если я удаляю все узлы, кроме одного, я могу анимировать этот узел с соответствующей формой наложения. Больше чем один узел, и он падает.

У кого-нибудь есть идеи относительно того, почему это происходит? Или какое-либо доказательство того, что расширениям iMessage предоставляется только определенное количество вычислительной мощности, прежде чем они будут уничтожены (другая моя теория)?

Ценю любую помощь!

1 Ответ

0 голосов
/ 19 сентября 2018

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

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

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

Имейте в виду, что графический процессор является общим ресурсом в системе. Расширения приложений не получают высший приоритет для общих ресурсов; например, виджет «Сегодня», который запускает игру с интенсивной графикой, может дать пользователям плохой опыт. Система может прекратить работу такого расширения из-за нехватки памяти. Функциональность, которая интенсивно использует системные ресурсы, подходит для приложения, а не для расширения приложения.

...