[英]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.