#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 предупреждения почти всегда являются ошибками, и их никогда не следует игнорировать.