Как найти все CALayers, связанные с nsview? - PullRequest
2 голосов
/ 11 августа 2011

Я размещаю плагин Apple Pitch Shift Audio Unit в Mac OSX 10.7 Lion. PitchShiftView состоит из слоев CAL: по одному на каждую ручку и т. Д.

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

Как мне получить доступ к этим слоям или почему они не привязаны к остальной иерархии слоев?

1 Ответ

1 голос
/ 12 августа 2011

Они могут на самом деле не быть слоями или, по крайней мере, не слоями в текущем NSView. Они могут быть подпредставлениями NSView или даже NSView, которые парят над рассматриваемым NSView. Почти все возможно.

Первый инструмент, который вам нужен, это Accessibility Inspector (в / Developer). Это позволяет вам указать на что-либо на экране и выяснить, где оно находится в иерархии специальных возможностей, что очень часто тесно связано с тем, где оно находится в иерархии представлений. Как только вы поймете, где они находятся в иерархии представлений, вы можете начать копаться с отладчиком, пытаясь понять, где они находятся в иерархии слоев, если они находятся в иерархии слоев. Помните, что на Mac CALayer является дополнительным дополнением к NSView. Так что не может быть слоев.

...