0
내 응용 프로그램에서 AudioFileOpenWithCallbacks
함수를 사용하여 MP3 데이터를 청크로 제공합니다.Obj-C 객체가 C 콜백 함수에서 해제되지 않음
AudioFileOpenWithCallbacks((__bridge void *)(self), TTMAudioFile_ReadProc, NULL, TTMAudioFile_GetSizeProc, NULL, 0, &aqData.mAudioFile);
, self
가 함유 오브젝티브 C 클래스이며 다음과 같다 : I 함수를 호출한다.
OSStatus TTMAudioFile_ReadProc(void *inClientData, SInt64 inPosition, UInt32 requestCount, void *buffer, UInt32 *actualCount) {
TTMAudioQueuePlayer *this = (__bridge TTMAudioQueuePlayer *)inClientData;
NSData *data = [this.decryptor dataAtOffset:inPosition length:requestCount error:NULL];
memcpy(buffer, data.bytes, data.length);
NSUInteger length = data.length;
*actualCount = (UInt32)length;
return noErr;
}
이 작동하지만있는 NSData가 해제되지 않는 다음과 같이
내 TTMAudioFile_ReadProc
콜백 함수입니다. 악기의 프로파일 할당은 다음과 같이 많은 할당 공개 :
retain
호출이 있습니다,하지만 내가 그들을 유지 할 수있는 I는 표시되지 않습니다. 또한, 나는 ARC를 사용하고 있는데, 왜 이런 일이 일어나는지 모른다.
더 많은 코드를 보지 않고도 디버그하기가 정말 어렵습니다. 'dataAtOffset'의 기능은 무엇입니까? – Sulthan