Управление памятью в NotificationServiceExtension внутри фреймворка
Для меня это что-то новое, но я столкнулся с проблемой управления памятью в NotificationServiceExtension. Чтобы дать представление о проблеме, я кратко опишу ситуацию:
Framework в основном используется для обработки push-уведомлений. Он также использует богатые уведомления. Разработчик, чтобы использовать наш фреймворк, должен импортировать его в свой NotificationServiceExtension и использовать наш класс в качестве суперкласса. К сожалению, это когда возникает проблема с памятью. NotificationServiceExtension может обрабатывать только 12 МБ ОЗУ, поэтому даже 1 МБ памяти важны для нас. Я заметил, что когда пользователь использует наш фреймворк (импортирует его), он также загружает весь импорт, который фреймворк имеет в классах. Так, например.
У меня есть один класс в рамках, который отвечает за отображение SafariViewController, для этого мне нужно импортировать SafariServices
, Этот импорт потребляет 2,5 МБ ОЗУ при запуске NotificationServiceExtension. Я хотел бы подчеркнуть, что расширение никогда не использует этот класс, но оно существует в фреймворке. Более того, даже если framework никогда не использует этот класс, но он существует только как файл, он также размещается в Extension.
Кто-нибудь сталкивался с такой проблемой? Мне интересно, как я могу запретить расширению распределять импорт всех фреймворков?