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 events da classe.
callback
Handle de função chamado como callback(src, evtdata), em que src é o objeto e evtdata traz informações do evento.

Argumentos de saída

lh
Um objeto event.listener. O listener existe enquanto lh ou 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')
Saída
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.

Veja também

listener event.hasListener events notify