Что может нарисовать одновременно конструктор интерфейса? - PullRequest
12 голосов
/ 10 ноября 2011

Я никогда не использовал возможность рисовать одновременно, упомянутую в iterface builder. Смотрите изображение ниже:

enter image description here

Может кто-нибудь объяснить мне его использование и цель?

Ответы [ 2 ]

16 голосов
/ 10 ноября 2011

Вы можете использовать его для информирования AppKit о том, что ваш NSView метод экземпляра -drawRect: экземпляра может быть вызван из вторичного потока.

Это 10.6+.Когда / если AppKit отображает представления асинхронно, -drawRect: выполняется с использованием параллельных блоков, и ваш -drawRect: будет вызываться из вторичного потока.Это означает, что реализация вашего подкласса должна быть поточно-ориентированной (для совместимости она по умолчанию отключена).

Подробнее см. Также -[NSView setCanDrawConcurrently:], поскольку для включения этого поведения требуется несколько вещей.Кроме того, это не должно означать, что AppKit является поточно-ориентированным или что его подклассы NSView предназначены для поддержки этой функциональности - он предназначен для вашего тяжелого рисунка.

3 голосов
/ 10 ноября 2011

Опция для вида, который поддерживает резьбовой рисунок, например NSProgressIndicator.Если установлен флажок Draw Draw Concurrently, тогда drawRect может быть вызван из фонового потока для этого представления.См. NSView справочник по классам.
Ни одно из представлений AppKit не поддерживает это (за исключением NSButton и NSProgressIndicator, но у них есть отдельные API для этого по историческим причинам).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...