如何解决在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....
以上所有内容均可正确打印到控制台。然后有被调用的方法:
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中,它将编译,但是在运行时会收到错误。这就是您正在发生的事情。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。