微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在iPhone应用程序中将NSString作为参数传递时会发生问题

如何解决在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 举报,一经查实,本站将立刻删除。