2011-03-31 6 views

답변

7

전적으로 API에 따라 다름. API가 함수, 블록 또는 메소드를 호출하는 경우 사용해야합니다.

만큼 콜백 함수 유형이 같은 것입니다 같이

void (*hollabackman)(AudioGunk*foo, void*context); 

그리고 콜백을 설정하기위한 API가 뭔가 같은 : 다음

setCallback(hollabackman func, void *context); 

을 수행 할 수 있습니다

- myMethod 
{ 
    setCallback(&myCallbackFunc, (void *)self); 
} 

- (void) hollaedBack: (AudioGunk*) aGunk 
{ 
..... 
} 

다음 :

void myCallbackFunc(AudioGunk *foo, void *context) 
{ 
    MyClass *self = (MyClass *) context; 
    [self hollaedBack: foo]; 
} 

콜백을 설정할 때 retain 자체를 제안하고 콜백을 무너 뜨릴 때 release과 만 균형을 유지할 것을 제안합니다.

+0

+1 멋진 구조에 대한 +1 – Till

+0

+1, 비슷한 회신 자신을 입력하는 동안주의 산만 해 : D 조 – Goz

1

CoreAudio (AudioQueueServices 포함)에는 ObjectiveC 인터페이스가 없습니다. 순수한 C는 CoreAudio와 직접 인터페이스하기위한 대답입니다.

하지만 단발 ObjectiveC 개체 메서드를 호출하는 래핑 C 함수를 만들 수 있습니다.