Эта строка мусора:
[request setDidFinishSelector:[self performSelector:@selector(imageDownloaded:idPlace:)withObject:request withObject:place.idPlace]];
Это должно быть как минимум предупреждение о компиляции. Вы немедленно выполняете -imageDownloaded:idPlace:
, а затем берете результат (который в вашем случае будет любым значением мусора в стеке) и возвращаете его в качестве селектора. данные ответа равны нулю, потому что вы на самом деле выполняете свой метод imageDownloaded:
еще до того, как запрос будет выполнен.
Если предположить, что ASIHTTPRequest принимает только didFinishSelectors вида foo:
(например, один аргумент), то нет хорошего способа сделать то, что вы пытаетесь сделать, - это добавить второй аргумент к методу. Это просто не сработает. У вас есть несколько альтернатив, но, возможно, самый простой - использовать связанные объекты ObjC. Вы можете повесить свой place.idPlace
объект за пределы запроса и получить его позже.
Вверху вашего файла определите ключ:
static char kAssociationKey; // we just want its memory location
Тогда при запуске запроса вы можете выполнить:
objc_setAssociatedObject(request, &kAssociationKey, place.idPlace, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
[request setDidFinishSelector:@selector(imageDownloaded:)];
Это прикрепит place.idPlace
к объекту запроса. Тогда в вашем didFinishSelector вы можете запустить
id oldIdPlace = objc_getAssociatedObject(request, &kAssociationKey);