簡體   English   中英

在iPhone應用程序中將NSString作為參數傳遞時出現問題

[英]Problems passing NSString as argument in iPhone app

這是我的問題的背景。 首先有一個線程開始:

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

奇怪的是, 根本沒有 NSLogs打印出來 沒有。 娜達 壓縮。 然后,當應用嘗試將位置傳遞給read wav方法時,該應用便崩潰了(大概是因為字符串有問題)。

當我從使用NSTemporaryDirectory切換到NSBundle時,這一切開始發生,但是我不確定這是否與此有關。 有什么建議嗎?

我接受了Joetjah的建議,開始改用:

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

現在我得到了: 在此處輸入圖片說明

Joetjah的第二條建議進行第二輪比賽 在此處輸入圖片說明

您收到的消息說SpeakHereController沒有實現runAllAudioRoutines:方法。

您是否在正確的對象上調用runAllAudioRoutines:

擴展: Objective-C是一種動態語言。 您可以在任何對象上調用任何方法,但是如果該對象未實現該方法,則應用程序將崩潰,並顯示以下消息:

“無法識別的選擇器已發送到實例...”

C ++是一種靜態語言。 如果嘗試調用未為對象定義的函數,則該函數將無法編譯。 在Objective-C中,它將編譯,但是在運行時會收到錯誤。 這就是你正在發生的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM