2

Apple のSpeakHereサンプル アプリを使用してオーディオを録音できません。Xcode内からSimulatorでアプリを実行すると正常に起動するのですが、記録ボタンを押すと「Thread 1: EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0)」というエラーが発生します。問題発生後のスクリーンショット

アプリの起動時にルート ビュー コントローラーが見つからないというログ メッセージは、上記のエラーが発生する前に既に存在しており、おそらく私の問題には関係していません。

リンクされた Web サイト (この質問の上部を参照) から SpeakHere サンプル プロジェクトをダウンロードし、Xcode で新しいダウンロードを開き、アプリを直接起動しました。設定もコード行も変更しませんでした。この問題は非常に一般的であるに違いありませんが、Google と stackoverflow でこの問題を検索しましたが、解決策は見つかりませんでした。

Xcode バージョン 4.5.2 (4G2008a) と 2009 年後半の Mac OS X 10.8 搭載の MacBook Pro を使用しています。

また、友人に自分のコンピューターでこれを試してもらいましたが、彼はまったく同じ問題を抱えています。彼の OS は同じで、XCode のバージョンも 4.5.2 です。

Xcode の古いバージョンを試してみようと思いますが、現在、接続で試行錯誤のアプローチのために数ギガバイトをダウンロードするのは好きではありません。

「Xcodeバージョンでうまくいく...」などのレポートを含め、助けていただければ幸いです。ありがとう!

4

2 に答える 2

17

この問題は、メソッドAQRecorder::StartRecord(CFStringRef inRecordFile)で関数CFURLCreateWithString()が失敗し、nil へのポインターを返すために発生します。これは検出されず、後でこの nil ポインターのコード呼び出しCFRelease()で EXC_BREAKPOINT が発生します。

このメソッドの基本的な目的はCFURLCreateWithString()、url 文字列を入力として受け取り、出力として CFURL オブジェクトへのポインターを返すことです。ここでの問題は、入力が URL 文字列ではないことです。file:/代わりに、接頭辞などのないローカルファイルシステム上の単なるパスです。このため、この方法は失敗します。

解決策は、メソッドへの動作していない呼び出しを削除し、CFURLCreateWithString()代わりに関連するメソッド、つまりCFURLCreateWithFileSystemPath()、ローカル ファイル システム パスを取得して CFURL に変換する準備ができている を呼び出すことです。

methodAQRecorder::StartRecord(CFStringRef inRecordFile)で、行を置換またはコメントアウトします

url = CFURLCreateWithString(kCFAllocatorDefault, (CFStringRef)recordFile, NULL);

と挿入

url = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, (CFStringRef)recordFile, kCFURLPOSIXPathStyle, false);

その場所で。

于 2012-11-29T16:45:06.643 に答える
0
url = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, (CFStringRef)recordFile, kCFURLPOSIXPathStyle, false);

上記のコードにより、xcoce 4.6 がコンパイルされ、シミュレーターで実行されましたが、USB マイクから音声が録音されません。マイクをガラッシュ バンド アプリケーションでテストし、音声を正常に録音および再生しましたが、dbmeter はまったく動きません。とにかく、それを実際のデバイスに移植すると、シミュレーターで音声を録音および再生できません。

于 2013-02-05T02:06:03.470 に答える