-[NSURL objectAtIndex:]: нераспознанный селектор, отправленный экземпляру 0x4e1d6d0 в качестве htttprequest

#objective-c #asihttprequest #sigabrt

#objective-c #asihttprequest #sigabrt

Вопрос:

Я форматирую ASIHTTPRequest для отправки массива данных на сервер. У меня есть массив для ключей (propertyKeys) и массив для информации (PropertyValues), и я создал цикл для установки значений post и key как таковых.

 for(int i = 0;i<13;i  ){
    [request setPostValue:[propertyValues objectAtIndex:i] forKey:[propertyKeys objectAtIndex:i]];  
}
  

Однако я получаю следующую ошибку:

  *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSURL objectAtIndex:]: unrecognized selector sent to instance 0x4e1d6d0'
  

Я попытался посмотреть документацию для AHIHTTPRequest, но сайт, похоже, не работает.

Ответ №1:

Эта ошибка возникает в коде, который вы опубликовали, или в другом месте? Запуск приложения в режиме отладки (Cmd-Y) позволит вам проследить трассировку стека, чтобы точно увидеть, где произошел сбой.

Тем не менее, если сбой происходит в том, что вы опубликовали, это, вероятно, означает, что либо propertyKeys , либо propertyValues было освобождено и что его указатель теперь является мусором. Убедитесь, что они не будут освобождены или автоматически выпущены к тому времени, когда вы доберетесь до этой части вашей программы.

Комментарии:

1. таким образом, вместо определения их с помощью чего-то вроде NSArray PropertyValues = [NSArray с объектами …] Я должен инициализировать его, или мне просто нужно вызвать retain сразу после присвоения ему переменных?

2. черт, неважно, ты был прав. Первоначально я объединил их в NSDictionary, а затем освободил массивы. Хороший улов!

Ответ №2:

Вы случайно назначили NSURL вместо NSArray либо properyValues , либо propertyKeys . Проверьте, какие они есть в отладчике на данный момент.

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