0

これが私の問題のコンテキストです。まず、開始されるスレッドがあります。

-(void)run_thread: (NSObject* )file_path_NSObject
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

NSString *local_recordFilePath_NSString = (NSString *)file_path_NSObject;

NSLog(@"run thread : path   %@     ", local_recordFilePath_NSString);

printf("Running Thread...\n");

runAllAudioRoutines(local_recordFilePath_NSString);

// more code....

上記のすべてがコンソールに正しく出力されます。次に、呼び出されるメソッドがあります。

void runAllAudioRoutines(NSString *file)

{

NSLog(@"running All Audio Routines method...\n");

NSString *truncatedFilePath = [file stringByReplacingOccurrencesOfString:@"LoopExtended.wav"
                                                                withString:@"recordedFile.wav"];

NSLog(@"FILE for  !!!! -->  %@",truncatedFilePath);

const char *location  = [truncatedFilePath UTF8String];
const char *write_location = [file UTF8String];

int *vocal_data = read_wav(location, &size_vocal); 

// more code....

奇妙なことは、NSLog がまったく出力されないことです。何もない。なだ。ジップ。そして、場所を read wav メソッドに渡そうとすると、アプリがクラッシュします (文字列に何か問題があるためと思われます)。

これはすべて、NSTemporaryDirectory の使用から NSBundle の使用に切り替えたときに発生し始めましたが、それが関係しているかどうかはわかりません。何かアドバイス?

私はJoetjahの提案を受けて、代わりに使い始めました:

[self runAllAudioRoutines:local_recordFilePath_NSString];
     -(void)runAllAudioRoutines:(NSString*) file

そして今、私はこれを取得します:ここに画像の説明を入力

Joetjah からの 2 回目の提案による 2 回目の実行ここに画像の説明を入力

4

1 に答える 1

1

あなたが得ているメッセージはSpeakHereController、メソッドを実装していないと言っていrunAllAudioRoutines:ます。

runAllAudioRoutines:正しいオブジェクトを呼び出しましたか?

拡張: Objective-C は動的言語です。任意のオブジェクトで任意のメソッドを呼び出すことができますが、オブジェクトがメソッドを実装していない場合、アプリはクラッシュし、次のメッセージが表示されます。

「認識できないセレクターがインスタンスに送信されました ...」

C++ は静的言語です。オブジェクトに対して定義されていない関数を呼び出そうとすると、コンパイルされません。Objective-C ではコンパイルされますが、実行時にエラーが発生します。これがあなたに起こっていることです。

于 2011-04-13T15:07:43.783 に答える