2011-04-13 2 views
0

다음은 내 문제의 맥락입니다. 먼저 시작되는 스레드가 있습니다.iPhone 응용 프로그램에서 NSString을 인수로 전달하는 문제

-(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.... 

위의 내용은 모두 콘솔에 올바르게 인쇄됩니다. NSLogs의 없음 모든에서 을 인쇄하는 것이

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.... 

이상한 것은이 : 그런 다음 호출되는 방법이있다. 아무것도. 나다. 지퍼. 그리고 나서 app은 wav 메소드를 읽는 위치로 전달하려고 할 때 충돌합니다 (아마 문자열에 문제가 있기 때문일 수도 있습니다).

NSTemporaryDirectory에서 NSBundle로 전환했을 때이 모든 일이 발생하기 시작했으나 그 일과 관련이 있는지 확실하지 않습니다. 어떤 충고?

은 내가 Joetjah의 제안을 촬영 대신 사용하기 시작했습니다

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

을 지금은이 얻을 :

+0

콘솔에 호출 스택 및 오류가 표시되는 것을 확인하는 것이 유용 할 것입니다. – Sabobin

+0

@Eric Brotto : 충돌 로그도보고 싶습니다. 줄을'[self runAllAdioRoutines : local_recordFilePath_NSString];로 바꾸고'- (void) runAllAudioRoutines : (NSString *) file {'doesn? 그냥 확인^^ – Joetjah

+0

나는 콘솔에서 어떤 오류나 전화 스택을 얻고 있지 않다. 다른 곳이 아니라면 (?) –

답변

1

당신이 메시지 Joetjah enter image description here에서 두번째 제안에 enter image description here

두 번째 실행 얻기는 SpeakHereControllerrunAllAudioRoutines: 메소드를 구현하지 않는다고 말합니다.

올바른 대상에 runAllAudioRoutines: (으)로 전화 했습니까?

확장 : Objective-C는 동적 언어입니다. 당신은 어떤 객체에서 메소드를 호출 할 수 있지만 객체가 메소드를 구현하지 않는 경우, 앱이 메시지와 함께, 충돌합니다 :

는 "인식 할 수없는 선택기 인스턴스에 전송 ..."

C++는 정적 언어입니다. 개체에 대해 정의되지 않은 함수를 호출하려고하면 컴파일되지 않습니다. Objective-C에서는 컴파일되지만 런타임 중에 오류가 발생합니다. 이것은 당신에게 일어나는 일입니다.

+0

나는 그게 무슨 뜻인지 잘 모르겠습니다. 확장 할 수 있습니까? –