Main Content

addlistener

클래스: handle

이벤트 소스에 바인딩된 이벤트 리스너 생성

구문

el = addlistener(hSource,EventName,callback)
el = addlistener(hSource,PropertyName,EventName,callback)
addlistener(___)

설명

el = addlistener(hSource,EventName,callback)EventName 이벤트가 소스 객체 hSource에서 트리거될 때 이 이벤트에 대한 리스너를 생성합니다.

hSource가 배열이면 리스너는 hSource 배열의 어느 객체에서든 이벤트가 발생하면 응답합니다. callback은 콜백 함수를 참조하는 함수 핸들입니다.

el = addlistener(hSource,PropertyName,EventName,callback)은 미리 정의된 속성 이벤트 중 하나에 대한 리스너를 생성합니다. 다음과 같이 4개의 미리 정의된 속성 이벤트가 있습니다.

addlistener(___)는 핸들 없이 리스너 객체를 생성합니다. 이 구문은 위에 열거된 모든 입력 구문과 함께 사용할 수 있습니다.

이벤트 이름이벤트 발생 시기
PreSet

속성값이 설정되기 직전, set 액세스 메서드를 호출하기 전에 발생함

PostSet

속성값을 설정한 직후에 발생함

PreGet

속성값 쿼리가 처리되기 직전, get 액세스 메서드를 호출하기 전에 발생함

PostGet

쿼리에 속성값을 반환한 직후에 발생함

입력 인수

모두 확장

이벤트 소스는 이벤트의 소스인 객체이거나 소스 객체로 구성된 배열로, 핸들 배열로 지정됩니다.

소스 객체에서 트리거되는 이벤트의 이름으로, 따옴표로 묶인 텍스트(대/소문자 구분)로 지정됩니다. 속성 이벤트의 경우, 이벤트 이름은 4개의 미리 정의된 속성 이벤트 중 하나입니다.

데이터형: char | string

속성 이벤트가 리스너를 트리거하는 속성의 이름으로, 다음 값 중 하나로 지정됩니다.

  • 문자형 벡터 또는 문자형 벡터로 구성된 셀형 배열(여기서 각 문자형 벡터는 hSource의 객체에 대해 정의된 속성 이름임)

  • string형 또는 string형 배열(여기서 각 string형은 hSource의 객체에 대해 정의된 속성 이름임)

  • hSource에 있는 객체에 대해 정의된 속성에 대응하는 스칼라 matlab.metadata.Property 객체이거나 matlab.metadata.Property 객체로 구성된 배열

hSource가 스칼라인 경우에만 동적 속성에서 속성 이벤트에 리스너를 연결할 수 있습니다. hSource가 스칼라 이외의 값이면 속성이 hSource의 클래스에 속해야 하고 동적 속성을 포함할 수 없습니다(동적 속성은 이 클래스 정의에 포함되지 않음).

소스 속성을 정의하는 클래스는, 속성 이벤트를 수신 대기할 수 있도록 GetObservableSetObservable 속성 특성을 설정해야 합니다.

리스너 콜백으로, 함수 핸들로 지정됩니다.

데이터형: function_handle

출력 인수

모두 확장

addlistener에 의해 생성된 리스너 객체로, listener 또는 event.proplistener 객체에 대한 핸들로 지정됩니다.

예제

모두 확장

그래픽스 figure 창의 Color 속성에 대한 속성 리스너를 생성합니다.

fig = figure;
propListener = addlistener(fig,'Color','PostSet',@(src,evnt)disp('Color changed'));

Color 속성의 값을 yellow로 설정합니다. 속성을 설정하면 Figure에서 PostSet 속성 이벤트가 트리거됩니다. 이벤트 소스 객체는 핸들 fig에서 참조된 특정 Figure입니다.

set(fig,'Color','yellow')

  • 리스너의 핸들이 들어 있는 변수(예: el)를 재정의하거나 지워도 리스너는 삭제되지 않습니다. 이벤트 객체(hSource)에는 여전히 event.listener 객체에 대한 참조가 있습니다. addlistener는 리스너의 라이프사이클을 이벤트의 소스 객체에 연결합니다.

  • 리스너는 이벤트 소스의 라이프사이클에 바인딩되지만 리스너는 다음과 같은 경우에 이벤트 소스가 제거된 후에도 계속 존재합니다.

    • 리스너에 대한 하나 이상의 참조가 다른 변수에 있는 경우(생성 시점에 리스너의 핸들이 지정된 경우 핸들 포함).

    • 리스너가 다른 이벤트 소스에 연결된 경우.

  • 리스너를 제거하려면 addlistener에서 반환되는 리스너 객체를 삭제하십시오. 예를 들면 다음과 같습니다.

    delete(el)

    위 명령은 핸들 클래스 삭제 메서드를 호출하여 작업 공간에서 객체를 삭제하고 리스너를 제거합니다.

  • 이벤트 객체에 연결되지 않는 리스너를 정의하려면 event.listener 생성자를 사용하여 리스너를 직접 생성하십시오.

대안

리스너 객체의 라이프사이클이 소스 객체 라이프사이클에 독립적이 되도록 하려면 리스너를 만들 때 listener를 사용하십시오.

확장 기능

스레드 기반 환경
MATLAB®의 backgroundPool을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool을 사용해 코드 실행 속도를 높일 수 있습니다.

버전 내역

R2008a에 개발됨