1
나는 주제에 관한 앞의 토론을 여러 번 읽었지만, Objective-C를 처음 접한 이래로 나는 그것을 정말로 이해하지 못했다. (블록, 셀렉터 및 델리게이트는 나에게 매우 새로운 것이다.) 나는 또한 클래스를 구현하는 리시버를 콜백 (rtMidiCallback)이이 내가objective-C로 콜백하기, RtMidi에 응용하기
void MidiInApi :: setCallback(RtMidiIn::RtMidiCallback callback, void *userData)
{
if (inputData_.usingCallback) {
errorString_ = "MidiInApi::setCallback: a callback function is already set!";
RtMidi::error(RtError::WARNING, errorString_);
return;
}
if (!callback) {
errorString_ = "RtMidiIn::setCallback: callback function value is invalid!";
RtMidi::error(RtError::WARNING, errorString_);
return;
}
inputData_.userCallback = (void *) callback;
inputData_.userData = userData;
inputData_.usingCallback = true;
}
C++로 작성되어 그 추상 클래스 RtMidi을 사용하고 있습니다 : 여기
상황이다. 는 그리고 내 주요 파일에 어떤 점에서 나는이 내가 그것을 수행하는 방법 아무 생각이없는 C++ 상황에 있지만, 오브젝티브 C에있을 것입니다이 midiIn->setCallback(rtMidiCallback);
뭔가를 작성해야합니다.
아이디어가 있다면 포인터에 관해 이야기 해 드리겠습니다. 대단히 감사합니다.
최고,
greg.
합니다. 그게 내가하려는거야. 하지만 콜백 함수는 다른 objective-c 클래스에 보내려는 구조체를 만듭니다. 나는 그 정보를 전달하는 법을 모릅니다. – user1772776
약간 자세한 설명이 있지만 Objective-C와 C++ 사이의 양방향 호출에 대한 기본 샘플을 답변에 추가했습니다. 아마 그게 도움이 될거야. –
대단히 감사합니다. 당신의 설명은 매우 편리합니다! – user1772776