Проблемы с передачей NSString в качестве аргумента в приложении iPhone - PullRequest
0 голосов
/ 13 апреля 2011

Вот контекст моей проблемы. Сначала есть поток, который запускается:

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

Странно то, что none из NSLogs печатает на всех . Ничего такого. Нада. Zip. А затем происходит сбой приложения, когда оно пытается передать местоположение в метод чтения wav (предположительно, потому что что-то не так со строкой).

Все это начало происходить, когда я переключился с использования NSTevenDirectory на NSBundle, но я не уверен, имеет ли это какое-либо отношение к этому. Любой совет?

Я принял предложение Джоетджи и начал использовать вместо него:

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

и теперь я получаю это: enter image description here

Второй запуск со вторым предложением от Джоетжи enter image description here

1 Ответ

1 голос
/ 13 апреля 2011

В полученном вами сообщении говорится, что SpeakHereController не реализует метод runAllAudioRoutines:.

Вы вызывали runAllAudioRoutines: для нужного объекта?

Расширение: Objective-C - это динамический язык.Вы можете вызвать любой метод для любого объекта, но если объект не реализует метод, приложение завершит работу с сообщением:

"нераспознанный селектор отправлен в экземпляр ..."

C ++ - это статические языки.Если вы попытаетесь вызвать функцию, которая не определена для объекта, она не скомпилируется.В Objective-C он будет компилироваться, но вы получите ошибку во время выполнения.Это то, что с тобой происходит.

...