コントローラー文字列データメンバーを呼び出し、UTF8String
メソッドを使用して NSString オブジェクトを C++ 文字列オブジェクトに変換すると、メモリ リークが発生します。呼び出しはコア オーディオRenderTone
関数内で行われ、次のようになります。
InstrumentGridViewController *viewController = (InstrumentGridViewController *)inRefCon;
string cppTrackName = [viewController->trackName UTF8String];
ただし、コードは for ループ内にあり、かなりのメモリ リークを引き起こしています。理由はありますか?変数を使用して C++ 関数呼び出しを行っているため、変換を行う必要がありcppTrackName
ます。私もこれを試しました:string cppTrackName = "synthTrack #1";
これはリークを引き起こすことなく正常に動作しますが、明らかにコントローラーから値を読み取る必要があります。
これはコンソールのエラーです(常に繰り返されます):
objc[6352]: Object 0x68c3b60 of class __NSCFData autoreleased with no pool in place - just leaking - break on objc_autoreleaseNoPool() to debug