Удаление CAMetalLayer для NSView - PullRequest
       32

Удаление CAMetalLayer для NSView

0 голосов
/ 27 ноября 2018

У меня есть пользовательский класс NSView, слой которого поддерживается.Я создаю CAMetalLayer для этого NSView, который создается в makeBackingLayer.

В makeBackingLayer Я создаю слой CAMetalLayer *backingLayer = [CAMetalLayer layer]; и устанавливаю свойства в соответствии с моими требованиями.

У меня вопрос, нужно ли dealloc этот слой явно при разрушении NSView?Я не создаю этот слой в переопределенной функции, это моя ответственность, чтобы удалить это, или NSView позаботится об этом?

Я не вижу никакой документации вокруг этого.Более того, все примеры, которые я вижу, нигде не упоминают об удалении слоев.

Спасибо

1 Ответ

0 голосов
/ 28 ноября 2018

Скорее всего, вам не нужно вручную освобождать ваш слой.Предполагая, что в вашей программе включен ARC (автоматический подсчет ссылок), ваш NSView должен автоматически освободиться, в зависимости от того, CALayer установлено его свойство .layer после его уничтожения.

Если вы не уверены, что ARCвключен, вы можете перейти к настройкам сборки в вашем проекте XCode и искать автоматический подсчет ссылок.Он был включен по умолчанию для новых проектов XCode уже несколько лет.

Примечание: Ваш NSView сможет освободить ваш слой, только если это единственный объект, содержащий ссылку наЭто.Если другие объекты в вашей программе содержат ссылки на ваш CAMetalLayer, ваш слой не будет освобожден, пока они не удалят свои ссылки.

...