Фэндом


Делегаты – это средство вызова методов классов обобщённым, но типобезопасным способом. Делегат может быть динамически (во время выполнения программы) привязан к нужному методу какого-либо объекта, а затем вызван, при этом вызывающий может не знать типа вызываемого объекта.

Делегаты могут копироваться или передаваться как параметры; последнее лучше производить по ссылке, чтобы не расходовать память и время на создание копии.

Делегаты определяются с помощью специальных макросов. Каждой возможной сигнатуре метода, который вызывается посредством делегата, соответствует свой макрос.

Делегаты могут привязываться через обычный указатель или через слабый указатель (на метод UObject'а или разделяемого указателя). Использование слабых указателей безопасно, если в потенциально рискованных ситуациях перед вызовом осуществлять проверку с помощью метода IsBound или вызывать делегат методом ExecuteIfBound.

Подробные правила изложены в исходном файле Engine\Source\Runtime\Core\Public\Templates\DelegateSignatureImpl.ipl.

Помимо обычных параметров, передаваемых вызывающим делегата кодом, можно использовать так называемые payload data, которые присваиваются делегату при его создании и автоматически передаются при всех вызовах.

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

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

Также на Фэндоме

Случайная вики