addlistener
Associa um callback a um evento ou a uma mudança de propriedade de um objeto handle.
Categoria: Programming > Classes
Sintaxe
lh = addlistener(obj, 'EventName', callback)
Chama callback sempre que obj dispara o evento.
lh = addlistener(obj, 'PropName', 'PostSet', callback)
Chama callback depois que a propriedade observável PropName é definida.
Descrição
Eventos permitem que objetos anunciem que algo aconteceu sem saber quem se interessa. Uma classe declara um evento no bloco events e o dispara com notify(obj, 'EventName'). Qualquer número de listeners pode ser anexado de fora, cada um com seu próprio callback, e eles são executados na ordem em que foram criados.
Ao contrário de listener, addlistener prende o listener à vida do objeto de origem: não é preciso guardar lh numa variável para que ele continue ativo.
Argumentos de entrada
obj- Objeto handle que define o evento.
'EventName'- Nome de um evento declarado no bloco
eventsda classe. callback- Handle de função chamado como
callback(src, evtdata), em quesrcé o objeto eevtdatatraz informações do evento.
Argumentos de saída
lh- Um objeto
event.listener. O listener existe enquantolhou o objeto de origem existir;delete(lh)o remove.
Exemplo
Escutando um evento embutido
m = containers.Map();
lh = addlistener(m, 'ObjectBeingDestroyed', @(src, evt) disp('map destroyed'));
class(lh)
lh.EventName
event.hasListener(m, 'ObjectBeingDestroyed')
ans = 'event.listener'
ans = 'ObjectBeingDestroyed'
ans = logical
1
Observações
Eventos declarados em uma classdef funcionam e executam seus callbacks quando notificados. O evento embutido ObjectBeingDestroyed é registrado, mas seu callback não é executado quando o objeto é apagado. O exemplo usa uma classe embutida porque um script não consegue definir sua própria classe.